<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>Операционные системы</title>
    <description>Рубрика, посвященная разработке операционных систем и их внутреннему устройству — все для начинающих преемников Линуса Торвальдса.</description>
    <link>https://tproger.ru/tag/operating-systems</link>
    <atom:link href="https://tproger.ru/tag/operating-systems/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sat, 03 Oct 2026 14:16:14 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>Операционные системы</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>Вышла FreeBSD 14.5 с поддержкой Linux API inotify</title>
      <link>https://tproger.ru/news/vywla-freebsd-14-5-s-podderzhkoj-linux-api-inotify</link>
      <comments>https://tproger.ru/news/vywla-freebsd-14-5-s-podderzhkoj-linux-api-inotify?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vywla-freebsd-14-5-s-podderzhkoj-linux-api-inotify</guid>
      <description><![CDATA[<p>FreeBSD 14.5 получила нативный API inotify, LLVM 21.1.8 и изменения для Clang. Релиз доступен с 8 сентября, его поддержка продлится до 30 июня 2027 года.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vywla-freebsd-14-5-s-podderzhkoj-linux-api-inotify">Вышла FreeBSD 14.5 с поддержкой Linux API inotify</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 08 Sep 2026 12:03:20 GMT</pubDate>
      <content:encoded><![CDATA[<p>Команда FreeBSD 8 сентября <a href="https://www.freebsd.org/releases/14.5R/announce/">выпустила FreeBSD 14.5-RELEASE</a> — шестой релиз ветки stable/14. Среди изменений для разработчиков — нативный API inotify, совместимый с Linux на уровне исходного кода, и обновление LLVM до версии 21.1.8.</p><p>Поддержка inotify появилась в ядре и стандартной библиотеке libc. Приложения могут получать уведомления об изменениях в файловой системе, не открывая каждый отслеживаемый файл. Это упрощает перенос программ, которые используют такой API в Linux; речь о совместимости исходников, а не о гарантированном запуске готовых Linux-приложений.</p><p>Для Clang изменили выбор линкера по умолчанию: теперь используется ld.lld вместо поиска линкера по имени ld. В math.h также стали доступны тригонометрические функции стандарта C23 с множителем π, в том числе sinpi и cospi.</p><p>Изменения затронули и командную строку. Утилита pwd по умолчанию работает в режиме -L, а не -P, как требует POSIX: при выводе пути сохраняются символические ссылки. Размер истории sh по умолчанию увеличили со 100 до 128 записей. Эти и другие изменения перечислены в <a href="https://www.freebsd.org/releases/14.5R/relnotes/">примечаниях к выпуску</a>.</p><p>Разработчики подчёркивают, что в 14.5 основной акцент сделан на исправлениях и обновлении компонентов. Уже доступны установочные образы и образы виртуальных машин. Поддержка FreeBSD 14.5 продлится до 30 июня 2027 года.</p>]]></content:encoded>
    </item>
    <item>
      <title>Debian 11 Bullseye остался без обновлений безопасности: LTS закончился</title>
      <link>https://tproger.ru/news/debian-11-bullseye-ostalsya-bez-obnovlenij-bezopasnosti-lts-zako</link>
      <comments>https://tproger.ru/news/debian-11-bullseye-ostalsya-bez-obnovlenij-bezopasnosti-lts-zako?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/debian-11-bullseye-ostalsya-bez-obnovlenij-bezopasnosti-lts-zako</guid>
      <description><![CDATA[<p>31 августа 2026 года закончилась LTS-поддержка Debian 11 Bullseye. С сентября Debian не выпускает для него обновлений безопасности. Как найти такие серверы и образы, куда обновляться, что такое Extended LTS и как пройти путь bullseye, bookworm, trixie.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/debian-11-bullseye-ostalsya-bez-obnovlenij-bezopasnosti-lts-zako">Debian 11 Bullseye остался без обновлений безопасности: LTS закончился</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 01 Sep 2026 17:27:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Команда Debian LTS 31 августа <a href="https://www.debian.org/News/2026/20260831">объявила</a> о конце поддержки <b>Debian 11 Bullseye</b>. Дистрибутив вышел 14 августа 2021 года, три года его сопровождали основные команды Debian, ещё два — команда LTS из волонтёров и заинтересованных компаний. С сентября Debian не выпускает для него обновлений безопасности: новая уязвимость в ядре, OpenSSL, nginx или PostgreSQL из репозиториев Bullseye исправления от проекта Debian не получит; для части пакетов остаётся платный Extended LTS сторонних компаний.</p><p>Практическая проблема в том, что Bullseye — не экзотика. Это образы VPS у хостеров, базовые слои Docker-образов, которые никто не пересобирал два года, и «тот сервер, который просто работает». Задача на сентябрь простая: найти их все и решить, куда переезжать.</p><ul><li>LTS Debian 11 длился с 15 августа 2024 по 31 августа 2026 года для amd64, i386, arm64 и armhf; всего Bullseye прожил пять лет.</li><li>С сентября Debian не выпускает для него обновления безопасности; часть пакетов могут поддерживать сторонние компании через платный Extended LTS.</li><li>Debian 12 Bookworm получает LTS до 30 июня 2028 года (amd64, i386, arm64, armhf, ppc64el); Debian 13 Trixie вышел 9 августа 2025 года.</li><li>Проверка одной командой: cat /etc/debian_version, ищите 11.x; в образах — grep по Dockerfile на bullseye.</li><li>Путь обновления: 11, затем 12, затем 13, по одному мажорному шагу, с бэкапом перед каждым.</li></ul><h2>Чем LTS отличается от обычной поддержки</h2><p>Стабильный выпуск Debian живёт три года под присмотром команд Security и Release. После этого дистрибутив передают в LTS — проект, который ведут волонтёры и заинтересованные компании, а не основные команды Debian; так описывает его <a href="https://wiki.debian.org/LTS/">вики проекта</a>. LTS добавляет ещё два года обновлений безопасности, но уже не для всех архитектур и не для всех пакетов. Для Bullseye этот срок закончился.</p><blockquote>Starting in September, Debian will not provide further security updates for Debian 11.</blockquote><p>После LTS есть ещё одна ступень — Extended LTS. Это не часть Debian: несколько компаний за деньги продолжают чинить ограниченный набор пакетов для клиентов, которым переезд обходится дороже. Полного покрытия там нет, и рассчитывать на него как на бесплатную отсрочку не стоит.</p><h2>Где искать Bullseye у себя</h2><p>Три типичных места. Первое: старые VPS и физические серверы, поставленные в 2021–2023 годах. Второе: Docker-образы с базой debian:bullseye, python:3.x-bullseye или node:xx-bullseye, которые собраны один раз и с тех пор только тегаются заново. Третье: встроенные системы и Raspberry Pi, где Raspberry Pi OS на базе Bullseye стоял по умолчанию до конца 2023 года.</p><h2>Куда обновляться</h2><p>Прямого пути с 11 на 13 нет: Debian поддерживает обновление только на следующий мажорный выпуск. Значит, сначала bullseye на bookworm, потом при желании bookworm на trixie. Debian 12 Bookworm — безопасный промежуточный вариант: у него LTS до 30 июня 2028 года, а из архитектур в LTS заявлены amd64, i386, arm64, armhf и ppc64el. Для второго шага есть отдельные release notes Trixie. Для Docker-образов проще: сменить тег базового образа на bookworm или trixie и пересобрать.</p><ul><li>Сделайте снимок или бэкап, затем apt update &amp;&amp; apt full-upgrade в текущей версии, чтобы уйти с чистой точки.</li><li>Сторонние репозитории (Docker, PostgreSQL, nginx) перед обновлением отключите, как советуют <a href="https://www.debian.org/releases/bookworm/i386/release-notes/ch-upgrading.en.html">release notes</a>, а после перехода подключите их версии для bookworm.</li><li>Замените bullseye на bookworm в /etc/apt/sources.list и файлах в sources.list.d; для Bookworm секция non-free-firmware добавляется отдельно.</li><li>apt update &amp;&amp; apt upgrade --without-new-pkgs, затем apt full-upgrade, перезагрузка, проверка сервисов.</li><li>В CI запретите тег bullseye в базовых образах линтером Dockerfile, чтобы он не вернулся через полгода.</li></ul><p>Любое зеркало Debian продолжит раздавать пакеты Bullseye, но новых обновлений безопасности от проекта в них не появится, так что «репозиторий работает» не означает «сервер защищён». При заказе нового VPS выбирайте образы Debian 12 или 13, если хостер ещё предлагает 11.</p><h2>Что дальше</h2><p>Следующий такой рубеж — 30 июня 2028 года, когда закончится LTS у Bookworm, то есть меньше чем через два года. Если вы переезжаете сейчас, разумно сразу планировать повтор процедуры к этой дате и держать обновление ОС в регулярном графике, а не как аварийную операцию раз в пять лет.</p><p>Источники: <a href="https://www.debian.org/News/2026/20260831">Debian 11 Long Term Support reaching end-of-life (Debian News)</a>, <a href="https://wiki.debian.org/LTS/">Debian LTS Wiki</a>, <a href="https://www.debian.org/releases/bookworm/i386/release-notes/ch-upgrading.en.html">Release notes Debian 12: upgrading</a></p><p>Изображение на обложке: Debian Project</p>]]></content:encoded>
    </item>
    <item>
      <title>Как я писал ОС, но не под x86, а под RISC-V</title>
      <link>https://tproger.ru/articles/kak-ya-pisal-os-no-ne-pod-x86-a-pod-risc-v</link>
      <comments>https://tproger.ru/articles/kak-ya-pisal-os-no-ne-pod-x86-a-pod-risc-v?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[lmemq]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-ya-pisal-os-no-ne-pod-x86-a-pod-risc-v</guid>
      <description><![CDATA[<p>Решил разобраться, как устроены операционные системы изнутри, и написал свою простую ОС под RISC-V. Делюсь написанием многопоточности, сохранением регистров процессора и другими интересными кейсами</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-ya-pisal-os-no-ne-pod-x86-a-pod-risc-v">Как я писал ОС, но не под x86, а под RISC-V</a>»</p>]]></description>
      <category><![CDATA[C++]]></category>
      <category><![CDATA[Низкоуровневое программирование]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Язык ассемблера]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 23 Jul 2026 13:21:29 GMT</pubDate>
      <content:encoded><![CDATA[<h3>Введение и дисклеймер</h3><p>Сразу скажу - я не считаю себя втором Терри Дэвисом и тем более не хочу делать аналог Виндовс. Изначально я все это затеял только ради прикола и изучения ассемблера.</p><p>А, и если что - мне 14, но я не против любой критики. И да, я тоже как и большинство местами использовал ИИ. Я не сидел читал мануалы часами, просто гуглил или просил нейронку пояснить.</p><h3>Так а в чем же проблема x86_64?</h3><p>Я так скажу - я пробовал писать под эту архитектуру. Мне не понравилось, всякие режимы (которые за меня правда переключал загрузчик), да и местный ассемблер мне было лень изучать. Просто захотел писать под более новую архитектуру.</p><p>Не буду говорить, что RISC-V лучшая, но я просто выбрал ее. Прикол в том, что инструкции короткие, да и в целом достаточно перспективно. Хотя и тут были проблемы.</p><h3>Был драйвер, стала ОС</h3><p>Я ничего с нуля не писал.Все началось с пыток ИИ, когда я пытался выдавить из него то обращение по конкретному адресу для доступа к графике, то опрос портов, то еще что-то такое. Мне стало лень и я пошел искать что-то плюс-минус готовое. И я нашел его - <a href="https://github.com/CityAceE/qemu-ramfb-riscv64-driver">ramfb</a>. По сути я получил готовый указатель на фреймбуфер для вывода на экран… И все. Но и на этом большое спасибо авторам драйвера. Дальше началась моя ОС.</p><h3>А где хранить данные?</h3><p>А тут первая проблема - как таковой кучи у меня еще нету. Есть стек, который за меня выделил автор драйвера. Есть всякие глобальные переменные. Но что если мне нужно много памяти (например, под картинки) и я не знаю точный размер? И в добавок, кто вообще рисует напрямую на экран? Тут нужен некий массив пикселей, который будет лежать в памяти, а по нашей команде быстро перенесется на экран (называется backbuffer).</p><p>Под кучу взял 64 мб из памяти, так как Qemu, где запускается моя ОС, выделяет ей аж 128 мб, часть уже занята ядром и стеком, но бОльшая часть пустует. Сделал простенький список свободных и занятых блоков памяти.</p><p>Это когда ты делишь память на куски, каждый помечаешь как занятый или свободный. Нужно мало памяти - откусываем от большого куска блок. Блок освободился, а рядом есть другой свободный блок - соединяем в один большой.Сразу же добавил функцию, чтобы узнать сколько памяти занято. Сейчас, например, занято около 3-4 мб. Ну это учитывая, что backbuffer и занял почти 3.5 мб.</p><p>В оперативной памяти что-то типа</p><h3>Такая разная многопоточность</h3><p>Как я думаю большинство знает, если у процессора одно ядро, одновременно на нем может выполняться только одна задача-поток. Но мы же может останавливать задачу, запускать другую, останавливать, запускать еще другую и так много раз в секунду. Тогда будет казаться, будто бы у нас несколько задач выполняются одновременно.</p><h4>Многопоточность кооперативная</h4><p>Так мы можем сказать потокам, чтобы если один из них решит, что стоит сделать паузу, сам вызвал yield() и отдал процессор другому потоку. И я это сделал. Все что нужно было - сохранить s-регистры процессора (те, в которых лежат всякие важные значения), указатель на личный стек потока (размер стека задается при создании) и указатель на “дорогу назад” ra. То есть yield() сохраняет эту информацию потока А, затем вместо нее загружает информацию потока Б. И так по кругу.</p><p>Кстати, стеки самих потоков я выделял в той самой куче. Просто брал блок на пару кб и говорил потоку: “Это твой стек”.</p><p>Но у такого концепта есть проблема - зависает один поток, остальные перестают выполняться. Да и в целом писать yield() каждый раз сложно.</p><h3>Многопоточность вытесняющая</h3><p>Поэтому я и решил переписать все на вытеснение. Для начала я сделал так - каждые 100к тиков процессора сохраняются все регистры и пинается функция обработки прерываний. Таймер, по которому будет работать многопоточность - это тоже прерывание. Так же эта функция ловит ошибки по типу kernel panic. Это было сложнее - так как потоки не добровольно отдают процессор, приходится сохранять вообще все 32 регистра. Но криво-косо я написал это и функцию sleep(), во время которой функция простаивает, ее никто не трогает.</p><p>А тут еще и ИИ начал выдавать бред, пока я тестировал у меня… начинал выполняться основной код, все было хорошо, а потоки - нет. Я сам не вижу ошибку, ИИ тоже. Он то предложит заменить какую-то часть функции, то еще что-то такое. Наконец я вспомнил про замечательную штуку - gdb. Запустил, посмотрел… Оказалось так - цикл отрисовки экрана был слишком долгим, во время него вызывалось переключение потоков, а их еще не было кроме главного. В итоге я подумал что смысла создавать потоки в конце, после отрисовки, нет, и перенес их в самое начало. Удивительно, но все заработало.</p><h3>Немного про режимы</h3><p>Как выяснилось, в RISC-V есть 3 режима (точнее 4, включая гипервизор, но тут он мне точно не нужен) - M-mode с полными привелегиями, S-mode для ядра ОС (я думал что и мое его использует), ну и U-mode для пользователей, но до этого мои ручки еще не дошли.</p><p>Ну и по пути я случайно осознал, что мое ядро выполняется аж в М-режиме:</p><p>Вызываю я ecall из потока. Смотрю - kernel panic. В логах какой-то код “11”. Оказалось, это и есть ecall - в M-mode он 11, а в S-mode (в котором, как я думал, работало ядро, и который я пытался выловить) это 9. Ну когда я нашел, уже быстро исправил.</p><h3>Визуальчик</h3><p>Но в это время на сам экран эмулятора Qemu… Ничего и не выводилось. Совсем. Просто белый экран. Хотелось красоты.</p><p>Тогда я вспомнил, что день назад прикрутил qoi.h к моему коду. QOI - формат изображений. Выбрал я его, так как декодер легкий и его удобно использовать в любой ОС, где есть базовые функции.</p><p>Я аккуратно, разумеется, согласно лицензии, взял из pop os, которой когда-то пользовался, картинку для фона. Конвертировал ее в .qoi, а так как моя ос еще не умела читать с диска, перевел картинку в заголовочный файл .h. Весит правда много, но влезает.</p><p>Дальше я нашел шрифт (Liberation Mono от Red Hat), перегнал и его в .h. Честно, визуал меня не сильно интересовал, поэтому быстро попросил ИИ переделать функции вывода в консоль в функции вывода на экран. Проверил, просмотрел что и как сделано, получилось нормально для старта. Правда пока что в графической консоли нет нормальной перемотки и много чего другого.</p><h3>Вывод</h3><p>Конечно, еще нету даже ввода с клавиатуры, мыши, файловой системы (даже простой). Но я считаю, что вышло неплохо, пусть и далеко от уровня реальной ОС типа Линукса. Понятно, что код не очень-то красивый, достаточно простой. Статью я выкладываю больше просто чтобы разобраться самому в том, что я написал.</p><p>Если я не забью на код, хотел бы написать еще и MMU и переход в U-mode.</p><p>Для тех кому очень интересно - можете глянуть исходный код <a href="https://github.com/lmemq/mqos-rv">mqos</a>, там же будут инструкции по запуску.</p>]]></content:encoded>
    </item>
    <item>
      <title>Кроах-Хартман: Rust поможет Linux и делает кодинг веселее</title>
      <link>https://tproger.ru/news/kroah-hartman-rust-pomozhet-linux-i-delaet-koding-veselee</link>
      <comments>https://tproger.ru/news/kroah-hartman-rust-pomozhet-linux-i-delaet-koding-veselee?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/kroah-hartman-rust-pomozhet-linux-i-delaet-koding-veselee</guid>
      <description><![CDATA[<p>Грег Кроах-Хартман заявил, что Rust становится частью Linux и поможет убрать до 80% уязвимостей ядра. Рассказываем, что это значит.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/kroah-hartman-rust-pomozhet-linux-i-delaet-koding-veselee">Кроах-Хартман: Rust поможет Linux и делает кодинг веселее</a>»</p>]]></description>
      <category><![CDATA[Безопасный код]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 20 Jul 2026 08:09:48 GMT</pubDate>
      <content:encoded><![CDATA[<p>Один из главных мейнтейнеров стабильной ветки ядра Linux <b>Грег Кроах-Хартман</b> заявил, что Rust уже не эксперимент, а часть долгосрочной стратегии экосистемы. По его словам, переход на Rust поможет убрать львиную долю рутинных уязвимостей ядра и облегчит жизнь мейнтейнерам.</p><p>На конференции <b>Open Source Summit India 2026</b> в Мумбаи Кроах-Хартман выступил с докладом <a href="https://www.youtube.com/watch?v=1nYl_9wBBhE&amp;list=PLEAGIV5X5B1U&amp;index=19">«Rust and Linux: How the Rust Language is Going to Help Linux Succeed»</a>. В нём он признался, что поначалу относился к языку скептически и считал, что всё необходимое уже есть в C. Сейчас он считает иначе: Rust действительно делает программирование интереснее и безопаснее.</p><ul><li>Грег Кроах-Хартман назвал Rust постоянной частью Linux, а не временным экспериментом.</li><li>По его оценке, около 80% уязвимостей ядра за последние 25 лет можно было бы поймать на этапе компиляции Rust.</li><li>Linux получает около 13 CVE в день и почти 9 изменений в час на протяжении десяти лет и более.</li><li>Binder — ключевой механизм IPC Android — уже имеет параллельную реализацию на Rust, а C-версия скоро уйдёт.</li><li>Git и ряд других крупных проектов также движутся в сторону Rust.</li></ul><h2>От скептицизма к поддержке</h2><p>Кроах-Хартман рассказал, что несколько лет назад друг советовал ему попробовать Rust, но он отмахнулся: C казался достаточным. Со временем он изменил мнение. «Он был прав. Я должен был сделать это тогда. Rust на самом деле весёлый. Он заставляет программирование быть весёлым», — сказал мейнтейнер.</p><p>Главное преимущество языка в ядерной разработке — владение и типизация, которые убирают массу мелких ошибок: непроверенные указатели, забытые разблокировки, неправильная очистка ресурсов. Именно такие баги, по словам Кроах-Хартмана, составляют большинство ежедневных CVE.</p><h2>Масштаб проблемы</h2><p>Linux развивается с огромной скоростью. Кроах-Хартман привёл цифры: ядро набирает примерно <b>девять изменений в час</b> уже больше десяти лет, а количество публично раскрываемых уязвимостей держится на уровне <b>около 13 CVE в день</b>. Большая часть из них — не сложные атаки, а простые ошибки в C-коде.</p><blockquote>Я видел каждую CVE ядра за последние 25 лет. Думаю, 80% исчезли бы просто потому, что Rust поймал бы их.</blockquote><h2>Что уже меняется в ядре</h2><p>Rust постепенно становится обязательным выбором для отдельных подсистем. Кроах-Хартман отметил, что <b>новые драйверы некоторых подсистем будут приниматься только на Rust</b>. Яркий пример — Binder, межпроцессный механизм Android, от которого зависят миллиарды устройств. В ядре уже существуют параллельные реализации Binder на C и Rust, и C-версия «скоро исчезнет».</p><p>Это означает, что Rust станет фундаментом не только для экспериментальных модулей, но и для ключевой инфраструктуры мобильной экосистемы.</p><p><b>Контекст:</b><br />Binder — это механизм межпроцессного взаимодействия (IPC) в Android. Он позволяет приложениям и системным сервисам безопасно обмениваться данными. Переписывание Binder на Rust напрямую влияет на безопасность и стабильность почти всех Android-устройств.</p><h2>Выводы</h2><p>Позиция Кроах-Хартмана — ещё один сигнал того, что Rust перешёл из разряда «перспективного языка» в разряд инфраструктурного инструмента. Если оценка в 80% CVE верна, массовый переход на Rust в ядре может существенно снизить количество исправлений безопасности и освободить время мейнтейнеров для сложных логических задач.</p><p>Источник: <a href="https://developers.slashdot.org/story/26/07/20/0417244/rust-will-help-linux-succeed-and-makes-coding-fun-says-greg-kroah-hartman">Slashdot</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>KolibriOS 0.7.7: ОС на ассемблере, которая влезает на дискету</title>
      <link>https://tproger.ru/articles/kolibrios-0-7-7-os-na-assemblere-kotoraya-vlezaet-na-disketu</link>
      <comments>https://tproger.ru/articles/kolibrios-0-7-7-os-na-assemblere-kotoraya-vlezaet-na-disketu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kolibrios-0-7-7-os-na-assemblere-kotoraya-vlezaet-na-disketu</guid>
      <description><![CDATA[<p>KolibriOS 0.7.7 — российская ОС на ассемблере, которая помещается на дискету и работает на i586 с 8 МБ ОЗУ. Разбираем возможности и ограничения.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kolibrios-0-7-7-os-na-assemblere-kotoraya-vlezaet-na-disketu">KolibriOS 0.7.7: ОС на ассемблере, которая влезает на дискету</a>»</p>]]></description>
      <category><![CDATA[Низкоуровневое программирование]]></category>
      <category><![CDATA[Ретро]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Оптимизация]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Hardware]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Язык ассемблера]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 04 Jul 2026 12:28:13 GMT</pubDate>
      <content:encoded><![CDATA[<p>В 2026 году операционная система, которая полностью умещается на 3,5-дюймовой дискете и загружается быстрее, чем вы успеваете отпить кофе, звучит как технологическая шутка. Но <b>KolibriOS 0.7.7</b> существует, развивается и даже имеет рабочий графический стол. Это не эмулятор и не демо: полноценная 32-битная ОС, ядро которой написано на ассемблере.</p><p>В своей колонке <i>Daily Drivers</i> редактор Hackaday Дженни Лист скачала ISO-образ, запустила KolibriOS на современном ThinkPad и удивилась: система выглядит зрелой, стабильной и по-настоящему быстрой. Разбираем, что это за проект, откуда он взялся и кому пригодится сегодня.</p><h2>Что такое KolibriOS</h2><p><b>KolibriOS</b> — российский форк MenuetOS, созданный в 2004 году. В то время как автор оригинального MenuetOS Вилле Турьянмаа переключился на закрытую 64-битную версию, сообщество вокруг русскоязычного порта сохранило код открытым и продолжило развивать 32-битную ветку. Название «Колибри» выбрано неслучайно: система маленькая и быстрая, как птица-колибри.</p><p>Проект поддерживается преимущественно разработчиками из России, Казахстана, Украины и Германии. Код распространяется под открытой лицензией, а сборки регулярно публикуются на официальном сайте и зеркалах сообщества.</p><h2>Версия 0.7.7</h2><p>Версия 0.7.7 продолжает философию предельного минимализма. Минимальные системные требования смехотворны по нынешним меркам: <b>1 МБ</b> места на диске, <b>8 МБ</b> оперативной памяти и процессор класса <b>i586</b>. При этом система выдаёт графический интерфейс, многозадачность и набор встроенных программ.</p><p>Дженни Лист отмечает, что на ThinkPad 2020-х годов KolibriOS загружается «в мгновение ока» и сразу показывает рабочий стол. Интерфейс выглядит пиксельным, как в 1990-х: нет сглаживания, есть ощущение ретро. Но при этом всё работает — без синих экранов и зависаний.</p><ul><li>KolibriOS 0.7.7 — 32-битная ОС с ядром на ассемблере, базовый образ весит около 1 МБ.</li><li>Минимальные требования: i586, 8 МБ ОЗУ, 1 МБ на диске.</li><li>В комплекте браузеры, игры, эмуляторы, графические редакторы и среда разработки.</li><li>Главное ограничение для повседневного использования — отсутствие поддержки HTTPS.</li><li>Лучше всего подходит для старого железа, тонких клиентов, обучения и ретрокомпьютинга.</li></ul><h2>Как устроена система</h2><h3>Ядро на ассемблере</h3><p>Большая часть KolibriOS написана на <b>FASM</b> — плоском ассемблере. Это объясняет крошечный размер исполняемых файлов и молниеносную загрузку: система не тратит время на инициализацию абстракций, слоёв совместимости и десятков фоновых служб.</p><p>Важная оговорка: несмотря на миф «всё на ассемблере», часть приложений и драйверов портирована или написана на C, Free Pascal, Oberon и даже Python. Но ядро, графическая подсистема и системные вызовы остаются ассемблерными.</p><h3>Файловые системы и загрузка</h3><p>KolibriOS умеет загружаться с CD/DVD, USB, жёстких дисков и даже с классической дискеты 1,44 МБ. Поддерживаются файловые системы FAT12/16/32, exFAT, NTFS и ext2/3/4. Есть варианты для Coreboot и загрузка прямо из Windows.</p><h2>Что внутри: программы и игры</h2><p>Несмотря на размер, KolibriOS поставляется с обширным набором софта. По данным сообщества, в образ входят более <b>250 программ</b>, включая текстовый процессор, просмотрщик изображений, графический редактор, музыкальный плеер, IRC-клиент и веб-браузеры.</p><p>Из игр и развлечений — порты эмуляторов, DOSBox, а также shareware-версии классики вроде DOOM и Wolfenstein 3D на полноценном CD-образе. Есть поддержка SDL, что позволяет переносить проекты с «больших» систем.</p><blockquote>Something this polished deserves a while to play around.</blockquote><h2>Главное ограничение: интернет без HTTPS</h2><p>Дженни Лист называет именно этот момент решающим: встроенные браузеры KolibriOS, включая Netsurf и Webview, не поддерживают HTTPS. Без этого современный веб практически закрыт: большинство сайтов, включая сам Hackaday, просто не откроются.</p><p>Это меняет статус системы с «основной ОС на каждый день» на «платформу для специальных задач». Почта, мессенджеры, облачные сервисы и онлайн-документация остаются недоступны без промежуточного прокси или другой машины.</p><p><b>Почему HTTPS сложно:</b><br />Современный TLS требует большой криптографической библиотеки, регулярных обновлений корневых сертификатов и поддержки множества алгоритмов. В условиях ОС размером в мегабайт это серьёзный архитектурный вызов, который сообщество пока не взяло в штатный комплект.</p><h2>Кому и где пригодится KolibriOS</h2><p>С учётом ограничений у KolibriOS остаётся несколько чётких сценариев применения. В России и соседних странах это особенно актуально: парки старого офисного и школьного оборудования часто содержат машины, которые официально «не тянут» современные ОС.</p><ul><li>Воскрешение старого железа. Pentium- и ранние Core-машины получают рабочий стол, браузер для локальных страниц и офисные утилиты.</li><li>Тонкие клиенты. Низкие требования к RAM и CPU делают KolibriOS кандидатом для терминалов с удалённым рабочим столом.</li><li>Обучение. Ядро на ассемблере, простые системные вызовы и небольшой кодовой базы — отличная площадка для изучения устройства ОС.</li><li>Ретрокомпьютинг. Запуск DOS-игр через эмулятор, классические 2D-игры и ностальгический интерфейс 1990-х.</li><li>Встроенные системы. Сборка Kolibri-A ориентирована на специализированное железо и железные проекты.</li></ul><h2>Как попробовать KolibriOS</h2><p>Попробовать систему проще всего в виртуальной машине. Скачайте ISO-образ с официального сайта, создайте VM с 64 МБ ОЗУ и загрузитесь с образа. Для реального железа подойдёт запись образа на USB-флешку или CD.</p><ul><li>Скачайте ISO или образ дискеты с официального сайта KolibriOS.</li><li>Для VM: создайте 32-битную машину с 64 МБ RAM и VESA-видео.</li><li>Для железа: запишите ISO на CD или USB через обычную утилиту.</li><li>Загрузитесь и выберите разрешение экрана из меню загрузчика.</li><li>Исследуйте меню «Пуск»: игры, утилиты, терминал и браузер.</li></ul><p>Если планируете использовать сетевые функции, проверьте совместимость сетевой карты по <a href="https://wiki.kolibrios.org/" rel="noopener noreferrer">списку оборудования</a>. Поддерживаются многие чипы Realtek, Intel и 3Com.</p><h2>Выводы</h2><p>KolibriOS 0.7.7 — это не замена Windows или Linux, а демонстрация того, какой отклик может давать компьютер, когда софт пишут под железо, а не под абстракции. В эпоху, когда операционки растут гигабайтами, проект напоминает: минимализм ещё жив.</p><p>Для российского читателя у KolibriOS есть дополнительный смысл: это открытый проект с русскоязычным сообществом, который можно изучать, дополнять и применять для решения практических задач — от перевода старого классного компьютера в рабочее состояние до обучения низкоуровневому программированию.</p><p>Главный вопрос — нужна ли вам такая система прямо сейчас. Если у вас есть старый 32-битный ноутбук, интерес к ассемблеру или просто ностальгия по быстрым ОС — попробуйте. А для повседневной работы с интернетом пока придётся держать под рукой что-то посовременнее.</p><p><b>Источники:</b></p><ul><li><a href="https://hackaday.com/2026/07/02/jennys-daily-drivers-kolibrios-0-7-7/" rel="noopener noreferrer">Jenny’s Daily Drivers: KolibriOS 0.7.7 — Hackaday</a></li><li><a href="https://distrowatch.com/kolibri" rel="noopener noreferrer">KolibriOS на DistroWatch</a></li><li><a href="https://wiki.kolibrios.org/" rel="noopener noreferrer">Официальная вики KolibriOS</a></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Как я ужал NixOS ISO с 458 МБ до 183 МБ</title>
      <link>https://tproger.ru/articles/kak-ya-uzhal-nixos-iso-s-458-mb-do-183-mb</link>
      <comments>https://tproger.ru/articles/kak-ya-uzhal-nixos-iso-s-458-mb-do-183-mb?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-ya-uzhal-nixos-iso-s-458-mb-do-183-mb</guid>
      <description><![CDATA[<p>Разбираем эксперимент: отключаем Nix, SSH, GRUB, модули ядра и Perl-активацию. Уменьшаем ISO NixOS почти в 2,5 раза и объясняем, почему это не для продакшена.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-ya-uzhal-nixos-iso-s-458-mb-do-183-mb">Как я ужал NixOS ISO с 458 МБ до 183 МБ</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Оптимизация]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 29 Jun 2026 04:39:16 GMT</pubDate>
      <content:encoded><![CDATA[<p>Базовый установочный ISO <b>NixOS</b> весит <b>458 МБ</b> — и в нём даже нет vim. Для сравнения, Alpine Linux укладывается примерно в <b>66 МБ</b>. Разбираем, как автор блога natkr.com уменьшил NixOS почти в 2,5 раза, и где здесь подвох.</p><h2>Что такое NixOS</h2><p><b>NixOS</b> — это дистрибутив Linux, в котором всё системное окружение описывается декларативно на языке <b>Nix</b> и воспроизводится из одного конфигурационного файла. Каждая сборка помещает зависимости в /nix/store, что даёт атомарные откаты и воспроизводимость, но при этом легко разрастается размер.</p><p>Одна из удобных фич — команда nixos-rebuild build-vm: она превращает конфигурацию в виртуальную машину. Но иногда нужен не «тонкий» образ, привязанный к хосту, а самодостаточный ISO, который можно записать на флешку или загрузить в облаке.</p><ul><li>Базовый NixOS ISO занимает 458 МБ: 416 МБ — squashfs с пользовательским окружением, 26 МБ — initrd, 13 МБ — ядро.</li><li>Главные «тяжеловесы» внутри образа: модули ядра (144 МБ), Python 3 (128 МБ), systemd (60 МБ), Perl (56 МБ), GRUB (около 62 МБ).</li><li>Отключение Nix, документации, SSH, firewall и лишних зависимостей сокращает ISO до 197 МБ.</li><li>Замена Perl-активации на экспериментальные system.etc.overlay и services.userborn даёт финальный размер около 183 МБ.</li><li>Это игрушечный эксперимент: для десктопа и сервера такие отсечения небезопасны, но полезны как источник идей.</li></ul><h2>От VM к ISO за несколько строк</h2><p>Минимальная виртуальная машина на NixOS собирается из файла примерно такого вида:</p><p>Запуск: $(nix-build basic-vm.nix --attr vm --no-out-link)/bin/run-nixos-vm. При этом /nix/store монтируется с хоста, поэтому VM «тонкая». Для независимого ISO импортируем модуль iso-image.nix и собираем атрибут isoImage:</p><p>ISO собирается, загружается в QEMU, но размер сразу бросается в глаза.</p><h2>458 МБ — из чего они сложились</h2><p>Автор примонтировал полученный ISO и посмотрел распределение места. Вот ключевые цифры:</p><ul><li><b>416 МБ</b> — сжатый nix-store.squashfs с пользовательским окружением.</li><li><b>26 МБ</b> — начальная загрузочная среда initrd.</li><li><b>13 МБ</b> — ядро Linux.</li><li><b>3 МБ</b> — загрузчик isolinux.</li></ul><p>При распаковке squashfs картина ещё интереснее:</p><ul><li><b>144 МБ</b> — модули ядра (linux-6.18.35-modules).</li><li><b>128 МБ</b> — Python 3.13.</li><li><b>60 МБ</b> — systemd.</li><li><b>56 МБ</b> — Perl.</li><li><b>~62 МБ</b> суммарно — две копии GRUB (UEFI + BIOS).</li></ul><p>Поскольку ISO собирается локально, все пакеты из него есть и в хостовом /nix/store. Это позволяет использовать nix why-depends, чтобы найти, кто тащит каждую зависимость.</p><h2>Отключаем Nix, документацию и лишние сервисы</h2><p>Первый очевидный шаг — отказаться от демона Nix внутри ISO, ведь мы строим автономный образ, а не полноценную NixOS для работы с пакетами. Достаточно двух опций:</p><p>Результат: <b>384 МБ</b>. Экономия скромная, потому что часть зависимостей Nix всё ещё тянется через сервис register-nix-paths. Он регистрирует содержимое хранилища ISO при загрузке — но Nix-то мы уже убрали. Отключаем и его:</p><p>Теперь ISO уменьшился до <b>360 МБ</b>, а зависимость от Boost исчезла полностью.</p><h2>SSH: модуль без выключателя</h2><p>Следующий кандидат на удаление — OpenSSH-клиент. Проблема в том, что модуль programs/ssh.nix добавляет его в environment.corePackages, а отдельного переключателя programs.ssh.enable нет.</p><p>Попытка полностью исключить модуль через disabledModules ломает другие модули, например Plasma 6, которые ожидают существования опций programs.ssh. Выход — подменить опцию «пустышкой», не затрагивающей реальную конфигурацию:</p><p>Параллельно автор убрал firewall, documentation.man.enable и принудительно очистил environment.defaultPackages.</p><h2>GRUB: зачем две копии загрузчика</h2><p>ISO-пресет NixOS включает сразу и UEFI-, и BIOS-версии GRUB — отсюда около 62 МБ. Чёткого флага для отключения одной из них нет, поэтому автор пошёл грубым путём: сбросил system.extraDependencies и environment.systemPackages, оставив только environment.corePackages, чтобы shell хотя бы стартовал.</p><h2>Ядерные модули: четверть образа</h2><p>Модули ядра весили <b>144 МБ</b> — больше, чем весь Alpine ISO. NixOS не предоставляет удобного способа ограничить их набор для runtime, поэтому автор просто удалил папку модулей из системы после сборки:</p><p>Это полностью отключает динамическую загрузку модулей. Если что-то нужно — оно должно оказаться в boot.initrd.kernelModules или availableKernelModules. После этого образ уменьшился до <b>197 МБ</b>.</p><h2>Perl: заменяем активацию системы</h2><p>Perl в образе нужен только для скриптов активации: настройки /etc и создания пользователей. В nixpkgs уже есть экспериментальные замены — system.etc.overlay и нативный менеджер пользователей userborn.</p><p>Оба механизма помечены как экспериментальные, но в контексте «самодельного минимального ISO» это уже не самая безумная идея. Финальный размер: <b>183 МБ</b>.</p><h2>Что получилось и стоит ли повторять</h2><p>За несколько итераций образ сократился с <b>458 МБ</b> до <b>183 МБ</b> — почти в 2,5 раза. При этом система всё ещё загружается, автор смог залогиниться под root, правда разрешение экрана перестало переключаться.</p><p><b>Важно:</b> конфигурация выше — это не рецепт для продакшена. Отсутствие Nix, SSH, модулей ядра и Perl-активации ломает массу сценариев. Результат интересен скорее как демонстрация границ NixOS, чем как готовый шаблон.</p><p>Автор сама отмечает: для рабочего десктопа или сервера так делать не стоит. Но если вам нужен крошечный live-образ под единичный эксперимент — здесь много идей, с которых можно начать.</p><h2>Выводы</h2><p>Эксперимент показывает, что NixOS позволяет не только собирать сложные системы, но и жёстко урезать их — иногда в ущерб удобству. Главный инструмент здесь не волшебная опция, а последовательный анализ: смотреть, что занимает место, находить виновника через nix why-depends и решать, готовы ли вы от него отказаться.</p><blockquote>«At some point I just kept going because I got curious.»</blockquote><p>Если захотите повторить — начните с отключения Nix и документации, а дальше решайте, какие модули и пакеты действительно нужны в вашем live-образе. Исходный материал — в блоге автора: <a href="https://natkr.com/2026-06-19-nixos-but-smol/">I can haz smoller NixOS ISOs?</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Линус Торвальдс назвал «мерзкой» раскладку файлов sched_ext в Linux — код уже переложили по папкам</title>
      <link>https://tproger.ru/news/linus-torvalds-nazval-merzkoj-raskladku-fajlov-sched-ext-v-li</link>
      <comments>https://tproger.ru/news/linus-torvalds-nazval-merzkoj-raskladku-fajlov-sched-ext-v-li?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/linus-torvalds-nazval-merzkoj-raskladku-fajlov-sched-ext-v-li</guid>
      <description><![CDATA[<p>Линус Торвальдс назвал «мерзкой» раскладку файлов sched_ext в Linux и потребовал переложить их в отдельную папку. Разбираем, что изменилось в Linux 7.2.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/linus-torvalds-nazval-merzkoj-raskladku-fajlov-sched-ext-v-li">Линус Торвальдс назвал «мерзкой» раскладку файлов sched_ext в Linux — код уже переложили по папкам</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 26 Jun 2026 10:49:58 GMT</pubDate>
      <content:encoded><![CDATA[<p>Линус Торвальдс <a href="https://lore.kernel.org/lkml/CAHk-=wghMm2c+AYEcwYY7drSVXB27DYqc-ZXpFiq=XFs-w59wA@mail.gmail.com/">публично раскритиковал</a> структуру новых исходников sched_ext, которые вошли в Linux 7.2: вместо отдельной директории авторы рассовали файлы с префиксом ext_ прямо в kernel/sched. Он назвал это «мерзким» и потребовал убрать — и разработчики уже переложили код в kernel/sched/ext/.</p><p>В Linux 7.2 код расширяемого планировщика sched_ext изначально появился в виде файлов ext_arena.c, ext_cid.c, ext_types.h и других прямо в kernel/sched.</p><p>Линус Торвальдс слил изменения «под протестом», указав, что префиксы вместо директорий — это неправильный способ группировки.</p><p>Новый pull request перенёс файлы в kernel/sched/ext/; Торвальдс уже принял эту реструктуризацию.</p><h2>Что случилось</h2><p>На прошлой неделе в основную ветку Linux 7.2 попал основной набор изменений sched_ext — фреймворка, который позволяет реализовывать политики планирования в пользовательских программах BPF. К патчам не было претензий по функциональности, но Торвальдса возмутила организация файлов.</p><p>Вместо того чтобы создать поддиректорию kernel/sched/ext/, авторы добавили в kernel/sched несколько файлов с префиксом ext_: ext_arena.c, ext_arena.h, ext_cid.c, ext_cid.h и ext_types.h.</p><blockquote>Please don't do this disgusting thing. There's a reason we have subdirectories: it's to group files together and separate them out. Using name prefixing instead of directories is disgusting and wrong. If you have this many random sched-ext files, it damn well should be cleaned up and not be this kind of mess. I've pulled this, but under protest. Proper hierarchical filesystems have been available since 1965.</blockquote><h2>Как исправили</h2><p>В ответ разработчики отправили <a href="https://lore.kernel.org/lkml/e10b2679e4d0882e6d690c55c3efaa74@kernel.org/">новый pull request</a>, который перекладывает все sched_ext-файлы в отдельную директорию kernel/sched/ext/. Торвальдс уже <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7603d8e78023e5883e075b4625fbdf059c6384f7">принял</a> реструктуризацию.</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-26/89512d36-a006-490f-b024-cd83152e9bd5.webp" alt="Список файлов sched_ext, перенесённых в kernel/sched/ext/" /><figcaption>Так теперь выглядит перенос файлов sched_ext в отдельную директорию.</figcaption></figure><h2>Почему это важно</h2><p>С точки зрения пользователя разница кажется косметической, но для ядра это вопрос сопровождаемости. Иерархические директории — стандартный способ группировки связанного кода, а префиксы в общей папке быстро превращаются в беспорядок. Реакция Торвальдса подчёркивает, что даже мелкие архитектурные решения в Linux принимаются строго.</p><h2>Выводы</h2><p>История с sched_ext — хороший пример того, как в Linux следят за чистотой кодовой базы. Технически патчи работали, но неправильная организация файлов оказалась достаточно серьёзной проблемой, чтобы Торвальдс потребовал исправлений. Теперь код лежит там, где ему положено — в отдельной директории.</p><h2>Источники</h2><ul><li><a href="https://www.phoronix.com/news/Linux-Sched-Ext-Restructured">Phoronix: "Disgusting" Linux sched_ext Source Code Restructured</a></li><li><a href="https://lore.kernel.org/lkml/CAHk-=wghMm2c+AYEcwYY7drSVXB27DYqc-ZXpFiq=XFs-w59wA@mail.gmail.com/">Письмо Линуса Торвальдса в lkml</a></li><li><a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7603d8e78023e5883e075b4625fbdf059c6384f7">Коммит реструктуризации в git.kernel.org</a></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>В Linux 7.2 улучшили EROFS для разреженных AI-датасетов и эффективного ввода-вывода</title>
      <link>https://tproger.ru/news/v-linux-7-2-uluchwili-erofs-dlya-razrezhennyh-ai-datasetov-i-effekt</link>
      <comments>https://tproger.ru/news/v-linux-7-2-uluchwili-erofs-dlya-razrezhennyh-ai-datasetov-i-effekt?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/v-linux-7-2-uluchwili-erofs-dlya-razrezhennyh-ai-datasetov-i-effekt</guid>
      <description><![CDATA[<p>В ядре Linux 7.2 файловая система EROFS получила поддержку разреженных данных и ускорение I/O. Разбираем, зачем это нужно для AI-моделей.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/v-linux-7-2-uluchwili-erofs-dlya-razrezhennyh-ai-datasetov-i-effekt">В Linux 7.2 улучшили EROFS для разреженных AI-датасетов и эффективного ввода-вывода</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Оптимизация]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 25 Jun 2026 08:58:12 GMT</pubDate>
      <content:encoded><![CDATA[<p>В ядро <b>Linux 7.2</b> вошли обновления файловой системы <b>EROFS</b>, которые делают её удобнее для хранения больших разреженных наборов данных — например, датасетов для обучения ИИ. Главное изменение — поддержка SEEK_HOLE в компоновке физических кластеров (pcluster), что позволяет сохранять «дыры» в файлах вместо их сжатия в нули.</p><p><b>EROFS</b> (<i>Enhanced Read-Only File System</i>) — это доступная с Linux 4.19 файловая система только для чтения, заточенная под производительность и компактное хранение образов контейнеров, систем Android и, всё чаще, AI-моделей.</p><ul><li>Linux 7.2 получил два ключевых улучшения EROFS: разреженные pcluster и оптимизированное отображение chunk-based inode.</li><li>Поддержка sparse-данных помогает экономить место при копировании в overlayfs и корректно работать с SEEK_HOLE.</li><li>Удалён устаревший бэкенд FSCACHE — его функциональность заменяют файловые монтирования и fanotify.</li><li>Патчи подготовил мейнтейнер EROFS Гао Сян из Alibaba.</li></ul><h2>Зачем нужна поддержка разреженных данных</h2><p>Разреженные (sparse) файлы содержат пустые участки, которые не занимают место на диске. EROFS уже умеет прозрачно сжимать нули, но для AI-датасетов важно именно <b>сохранять дыры</b>: иначе overlayfs при копировании «вверх» распределит под них реальное пространство, а системный вызов SEEK_HOLE не найдёт ни одной «дыры».</p><p>Мейнтейнер EROFS Гао Сян из Alibaba <a href="https://lore.kernel.org/all/20260621194414.489939-1-hsiangkao@linux.alibaba.com/">пояснил в патчах</a>, что новый код отмечает целые pcluster как «дыры» двумя разными способами. Это особенно полезно для огромных AI-датасетов, где нулевые или неинициализированные фрагменты встречаются часто.</p><h2>Оптимизация ввода-вывода и удаление FSCACHE</h2><p>Помимо sparse-поддержки, EROFS в Linux 7.2 получила оптимизированное отображение запросов для inode на основе чанков. Разработчики сообщают, что новый код erofs_map_chunks() делает ввод-вывод более эффективным, хотя точных бенчмарков в анонсе не приводится.</p><p>Также из ядра окончательно удалили бэкенд <b>FSCACHE</b> для EROFS. Он раньше использовался для ленивой подгрузки образов, но после того как FSCACHE сделал NETFS обязательной зависимостью, функцию признали устаревшей. Похожее поведение теперь реализуют через монтирование файлов и хуки fanotify.</p><h2>Итог</h2><p>Обновления EROFS в Linux 7.2 делают эту файловую систему более удобной для больших AI-датасетов: разреженные данные теперь не превращаются в лишние мегабайты при копировании, а ввод-вывод для chunk-based inode стал эффективнее. Для разработчиков, которые используют EROFS в контейнерных и ML-окружениях, это повод проверить свои сборки ядра.</p><p>Источник: <a href="https://www.phoronix.com/news/EROFS-Sparse-AI-Datasets">Phoronix</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>В терминале всего 33 Ctrl-шортката — разбор от Julia Evans</title>
      <link>https://tproger.ru/translations/v-terminale-vsego-33-ctrl-wortkata-razbor-ascii-control-charac</link>
      <comments>https://tproger.ru/translations/v-terminale-vsego-33-ctrl-wortkata-razbor-ascii-control-charac?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/v-terminale-vsego-33-ctrl-wortkata-razbor-ascii-control-charac</guid>
      <description><![CDATA[<p>Почему Ctrl-M = Enter, где обрабатываются Ctrl-C и Ctrl-W, как canonical mode отличается от noncanonical и что умеет stty. Перевод Julia Evans.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/v-terminale-vsego-33-ctrl-wortkata-razbor-ascii-control-charac">В терминале всего 33 Ctrl-шортката — разбор от Julia Evans</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 20 Apr 2026 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если вы когда-нибудь нажимали Ctrl-1 в терминале и удивлялись, почему ничего не происходит — это не баг, а ограничение ASCII: только 33 комбинации с Ctrl дают различимый control-код, остальные терминал пропускает как обычный ввод или превращает в ANSI escape-последовательность. Понимание этой таблицы помогает в тех самых моментах, когда терминал «сломан», Ctrl-S внезапно всё заморозил, а Ctrl-W в одной программе удаляет слово, а в другой — закрывает окно. Julia Evans, автор блога <a href="https://jvns.ca/">jvns.ca</a> и <a href="https://wizardzines.com/">иллюстрированных гайдов (zines) про Linux и командную строку</a>, объяснила, почему Ctrl-M — это Enter, а Ctrl-S замораживает терминал. Ниже — перевод её <a href="https://jvns.ca/blog/2024/10/31/ascii-control-characters/">разбора</a>.</p><p>Недавно я много думала про терминал, и вчера мне стало интересно: что вообще происходит со всеми этими «control codes» — Ctrl-A, Ctrl-C, Ctrl-W и так далее? Я собрала таблицу всех 33 ASCII control characters и того, что они делают на моей машине (macOS). Оговорок там миллион, но ниже я расскажу, что это всё значит и какие есть нюансы.</p><ul><li>В ASCII всего <b>33 control-кода</b>: A–Z (26 штук) плюс 7 дополнительных (@, [, \, ], ^, _, ?). Сделать Ctrl-1 как шорткат невозможно.</li><li>Коды обрабатываются <b>в трёх разных местах</b>: OS terminal driver (например, Ctrl-C → SIGINT), библиотека readline (Ctrl-A, Ctrl-E) или само приложение (emacs использует Ctrl-X).</li><li>Ctrl-M = Enter, Ctrl-I = Tab — поэтому их нельзя использовать как отдельные шорткаты без спец-настройки эмулятора.</li><li>Режим терминала — <b>canonical</b> или <b>noncanonical</b> — определяет, кто обрабатывает Backspace, Ctrl-W и Ctrl-U: OS или сама программа. Разбор обоих режимов — в теле статьи.</li><li>Утилита stty -a показывает текущие маппинги OS-кодов, а stty sane лечит «сломанный» терминал.</li><li>Backspace на разных системах посылает либо байт 127, либо 8 — отсюда исторические войны и конфигурации через stty erase.</li></ul><h2>Коды обрабатываются в разных местах</h2><p>Первое, что меня удивило: 33 control-кода делятся (очень условно) на три категории в зависимости от того, где они обрабатываются.</p><ul><li><b>Обрабатываются OS terminal driver</b> — например, когда ОС видит байт 3 (Ctrl-C), она посылает сигнал SIGINT текущей программе.</li><li><b>Передаются приложению как есть</b>, и приложение делает с ними что хочет. Внутри этой группы ещё три подгруппы: соответствуют реальной клавише (Enter → байт 13, Tab, Backspace); используются библиотекой <b>readline</b> для редактирования строки (Ctrl-A, Ctrl-E, Ctrl-W); используются конкретными приложениями (Ctrl-X в emacs).</li></ul><p>Никакой логики в том, какой код к какой категории относится, нет — просто так исторически сложилось.</p><h2>Почему именно 33 — и почему «Ctrl-1» не существует</h2><p>Ещё один сюрприз: control-кодов всего 33 штуки — буквы A–Z плюс семь дополнительных символов (@, [, \, ], ^, _, ?). Это значит, что если вы хотите сделать Ctrl-1 шорткатом в терминальном приложении — такого шортката просто не существует. На моей машине Ctrl-1 — это ровно то же самое, что нажать 1, а Ctrl-3 эквивалентно Ctrl-[.</p><p>Ctrl+Shift+C тоже не control-код — это комбинация, которую обрабатывает сам эмулятор терминала. В Linux Ctrl+Shift+X часто используется эмулятором для копирования, открытия новой вкладки или вставки — до TTY они не доходят.</p><p>Я всё время использую Ctrl+Left Arrow, но это тоже не control-код — это ANSI escape sequence (ESC[1;5D, где ESC — это сам байт 27 = Ctrl-[), совсем другая история.</p><p>Это устроено совсем не так, как шорткаты в GUI, где можно сделать Ctrl+любая клавиша.</p><h2>Официальные ASCII-имена бесполезны</h2><p>Каждый из 33 control-кодов имеет имя в ASCII (например, байт 3 — это ETX). Но эти имена придумывали не для компьютеров, а для телеграфа. Когда коды перешли в UNIX-терминалы, половина из них сменила смысл. В итоге ASCII-имена сегодня бесполезны в 50% случаев — проще вообще игнорировать их, чем пытаться понять, какие имена ещё соответствуют оригинальному значению.</p><h2>Почему Ctrl-M и Ctrl-I — это Enter и Tab</h2><p>Ctrl-M буквально идентичен Enter, а Ctrl-I — это Tab. Это делает их почти непригодными для шорткатов.</p><p>Некоторые всё равно используют Ctrl-I и Ctrl-M как шорткаты, но для этого надо настроить эмулятор терминала, чтобы он обрабатывал эти нажатия иначе, чем по умолчанию. Основной вывод: если пишете терминальное приложение — не используйте Ctrl-I и Ctrl-M как шорткаты.</p><h2>Как узнать, какой именно код посылается</h2><p>Пока я писала этот разбор, мне пришлось много экспериментировать с разными комбинациями клавиш. Я написала <a href="https://gist.github.com/jvns/fd2b56ada7b10bcc6fe5ec99e9a4be0d">маленький Python-скрипт echo-key.py</a>, который распечатывает получаемые байты. Наверняка есть более официальный способ, но мне удобнее иметь скрипт, который можно подкрутить под себя.</p><h2>Оговорка: canonical vs noncanonical mode</h2><p>Два кода — Ctrl-W и Ctrl-U — я в таблице пометила как «обрабатываются OS». На самом деле это не всегда так — зависит от режима терминала.</p><p>В <b>canonical mode</b> (построчный ввод) программа получает ввод только после нажатия Enter — до этого OS сама обрабатывает Backspace, Ctrl-W и другие правки. В <b>noncanonical mode</b> (посимвольный ввод) программа получает каждое нажатие сразу, и коды Ctrl-W и Ctrl-U проходят в программу, которая обрабатывает их как хочет.</p><p>Примеры программ в canonical mode:</p><ul><li>Любые неинтерактивные утилиты вроде grep или cat.</li><li>git, по моему опыту.</li></ul><p>В noncanonical mode:</p><ul><li>python3, irb и другие REPL.</li><li>Ваш шелл.</li><li>Любой полноэкранный TUI (less, vim).</li></ul><h2>Оговорка: все OS-коды настраиваются через stty</h2><p>Я написала «Ctrl-C посылает SIGINT», но технически это не обязательно так. Все коды, которые обрабатывает OS terminal driver, плюс Backspace, можно переназначить утилитой stty. Текущие маппинги смотрят через stty -a.</p><p>Я лично ни разу ничего не переопределяла через stty и не могу придумать, зачем бы мне это делать — это рецепт для путаницы и катастрофы. Но когда я спросила в Mastodon, люди назвали такие сценарии:</p><ul><li>Починить сломанный терминал через stty sane.</li><li>Настроить работу Backspace: stty erase ^H.</li><li>Включить поток управления: stty ixoff.</li><li>Некоторые даже переназначают SIGINT на другую клавишу, например на DELETE.</li></ul><h2>Оговорка: сигналы можно отключить</h2><ul><li>Если режим терминала ISIG (флаг, разрешающий сигналы от Ctrl-C и Ctrl-Z) выключен, OS вообще не посылает сигналы. Vim, например, отключает ISIG при запуске.</li><li>На macOS и других BSD-системах есть дополнительный control-код Ctrl-T, который посылает SIGINFO.</li></ul><p>Какие режимы ставит программа, можно посмотреть через strace: режимы терминала устанавливаются системным вызовом ioctl.</p><p>Комбинация режимов, которую ставит vim при запуске, по сути и есть так называемый «raw mode» — подробности в man cfmakeraw.</p><h2>Конфликтов очень много</h2><p>Раз кодов всего 33, конфликтов за один и тот же код — навалом. По умолчанию Ctrl-S замораживает экран, но если выключить этот flow-control, readline использует Ctrl-S для forward search.</p><p>Другой пример: Ctrl-T на моей машине то посылает SIGINFO, то переставляет местами два последних символа, то делает что-то совсем третье — в зависимости от того, установлен ли в программе ISIG и использует ли она readline (или имитирует его поведение).</p><h2>Backspace, «другой» Backspace и историческая боль</h2><p>В таблице я пометила байт 127 как «backspace», а байт 8 как «другой backspace». История оказалась настолько запутанной, что именно этот пункт собрал больше всего откликов в Mastodon.</p><p>Вот как это работает на моей машине:</p><ol><li>Я нажимаю клавишу Backspace.</li><li>В TTY уходит байт 127, в ASCII он называется DEL.</li><li>OS terminal driver и readline оба замапили 127 на «удалить символ» — работает и в canonical, и в noncanonical mode.</li><li>Предыдущий символ исчезает.</li></ol><p>Если нажать Ctrl+H, в readline-приложении это сработает как Backspace, а в программе без readline (например, cat) просто напечатается ^H.</p><p>У кого-то шаг 2 другой: клавиша Backspace посылает байт 8 вместо 127, и чтобы она работала, надо настроить OS через stty erase ^H. В Debian Policy Manual есть целый раздел про конфигурацию клавиатуры — по моему пониманию, его написали в 90-х, когда царила путаница с тем, что должен делать Backspace, и нужен был какой-то стандарт, чтобы всё заработало.</p><h2>На разных машинах всё по-разному</h2><p>Я почти наверняка упустила ещё десяток способов, которыми «как это работает на моей машине» может отличаться от «как это работает у других», и в моих описаниях тоже могут быть неточности. По stty -a у меня есть ещё три экзотических маппинга — Ctrl-O как «discard», Ctrl-R как «reprint» и Ctrl-Y как «dsusp» — но на практике они редко что-то делают и чаще всего проходят в приложение как есть.</p><h2>Честно говоря, это необязательно знать</h2><blockquote>Мне кажется, содержимое этого поста интересное, но не обязательно <i>полезное</i>. Я использовала терминал каждый день последние 20 лет, не зная почти ничего из этого — я просто знала на практике, что делают Ctrl-C, Ctrl-D, Ctrl-Z, Ctrl-R, Ctrl-L (ну и Ctrl-A, Ctrl-E, Ctrl-W), и не задумывалась о деталях. Этого почти всегда хватало, кроме случая, когда я возилась с xterm.js.</blockquote><p><i>От редакции:</i> знание это становится практическим в одном-двух сценариях, и их стоит держать в голове. Во-первых, когда терминал «ломается» — ввод не виден, Enter работает странно — вместо перезапуска шелла поможет stty sane или reset: теперь понятно, что именно они восстанавливают. Во-вторых, Ctrl-S, «замораживающий» терминал, — не баг, а реликт аппаратного flow control: отключить его навсегда можно через stty -ixon в .bashrc / .zshrc. Остальное — любопытная инженерная археология.</p><h2>Итог</h2><p>ASCII control characters — это слоёный пирог из трёх эпох: телеграфные корни 60-х, POSIX-терминалы 80-х и GUI-эмуляторы 2020-х, которые поверх всего этого ещё накручивают свою логику. Когда Ctrl-S внезапно замораживает экран, а Ctrl-T делает разные вещи в разных программах — это не баг, а побочный эффект 60 лет совместимости.</p><p>Оригинал: <a href="https://jvns.ca/blog/2024/10/31/ascii-control-characters/">jvns.ca — ASCII control characters in my terminal</a>. Также читайте на tproger: <a href="https://tproger.ru/news/ot-ffmpeg-do-torrentov-dlya-terminala--7-novyh-tui-instrumentov--kotorye-sovetuem">7 новых TUI-инструментов для терминала</a> и <a href="https://tproger.ru/news/15-poleznyh-komand-terminala-macos-dlya-novichkov">15 полезных команд терминала macOS</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>ИИ написал полный эксплоит для ядра FreeBSD — от уязвимости до root-шелла за 4 часа</title>
      <link>https://tproger.ru/news/ii-vpervye-napisal-polnyj-eksploit-dlya-yadra-os---ot-uyazvimosti-d</link>
      <comments>https://tproger.ru/news/ii-vpervye-napisal-polnyj-eksploit-dlya-yadra-os---ot-uyazvimosti-d?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/ii-vpervye-napisal-polnyj-eksploit-dlya-yadra-os---ot-uyazvimosti-d</guid>
      <description><![CDATA[<p>Claude за 4 часа написал два remote kernel RCE для FreeBSD (CVE-2026-4747). Оба дали root с первой попытки. Разбираем 6 задач от стека до шелла.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/ii-vpervye-napisal-polnyj-eksploit-dlya-yadra-os---ot-uyazvimosti-d">ИИ написал полный эксплоит для ядра FreeBSD — от уязвимости до root-шелла за 4 часа</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Кибербезопасность]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 01 Apr 2026 04:29:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>Фаззеры находят баги в ядрах операционных систем уже больше десяти лет. Но написать полноценный эксплоит, который превращает крэш в удалённый root-шелл, — это всегда считалось задачей исключительно для людей. Теперь эта граница сдвинулась.</p><p>Команда безопасности <a href="https://blog.calif.io/p/mad-bugs-claude-wrote-a-full-freebsd">Calif</a> опубликовала разбор того, как <b>Claude (Anthropic)</b> за ~4 часа написал два рабочих эксплоита для <a href="https://nvd.nist.gov/vuln/detail/CVE-2026-4747">CVE-2026-4747</a> — уязвимости переполнения стека в модуле ядра FreeBSD. Оба эксплоита сработали с первой попытки и дали <b>полный root-доступ</b> к удалённой машине.</p><p>Саму уязвимость тоже обнаружил ИИ: в официальном <a href="https://security.freebsd.org/advisories/FreeBSD-SA-26:08.rpcsec_gss.asc">бюллетене FreeBSD</a> указан «Nicholas Carlini using Claude, Anthropic». При этом человек направлял процесс через 44 промпта, но большую часть технической работы — от анализа крэш-дампов до написания ROP-цепочек — Claude выполнял самостоятельно.</p><p>— Claude написал полный remote kernel RCE для FreeBSD (CVE-2026-4747) за ~4 часа при минимальном участии человека (44 промпта)</p><p>— Уязвимость — переполнение стека в <b>kgssapi.ko</b> (модуль Kerberos-аутентификации для NFS), оценка CVSS 8,8 (HIGH)</p><p>— ИИ самостоятельно решил 6 нетривиальных задач: от настройки тестовой среды до перехода из режима ядра в пользовательский</p><p>— Оба эксплоита сработали с первой попытки, результат — uid=0 (root)</p><p>— FreeBSD уже выпустил патч 26 марта 2026 года (FreeBSD-SA-26:08)</p><h2>Уязвимость CVE-2026-4747 в ядре FreeBSD</h2><p><b>CVE-2026-4747</b> — переполнение стека (<a href="https://cwe.mitre.org/data/definitions/121.html">CWE-121</a>) в модуле ядра <b>kgssapi.ko</b> (реализует RPCSEC_GSS — механизм аутентификации NFS-клиентов через Kerberos). Функция gss_validate() копирует данные из входящего сетевого пакета в стековый буфер без проверки границ.</p><p>Переполнение буфера происходит <b>до</b> проверки учётных данных NFS-клиента — но для полноценной атаки нужен сетевой доступ к NFS-серверу. Это отражено в оценке <b>CVSS 8,8 (HIGH)</b> по данным NVD: вектор атаки сетевой, сложность низкая, требуются минимальные привилегии (PR:L).</p><p>Дополнительный фактор: конкретная функция в kgssapi.ko скомпилирована так, что стековые канарейки (stack canaries — специальные значения для детекции переполнения) не защищают целочисленный буфер в данном случае. Переполнение остаётся незамеченным. Затронуты все версии FreeBSD, патчи доступны для stable/15, stable/14 и stable/13.</p><h2>Кто стоит за исследованием</h2><p>Публикация — совместная работа <a href="https://blog.calif.io">Calif</a> (калифорнийская компания по безопасности, основанная <b>Thai Duong</b> — соавтором атак <a href="https://en.wikipedia.org/wiki/Transport_Layer_Security#BEAST_attack">BEAST</a> и <a href="https://en.wikipedia.org/wiki/CRIME">CRIME</a> на TLS) и <b>Nicholas Carlini</b> из Anthropic (PhD UC Berkeley, лауреат best paper на IEEE S&amp;P, USENIX Security и ICML). Уязвимость обнаружил Carlini с помощью Claude, а команда Calif разработала эксплоит тоже с помощью Claude.</p><h2>Как Claude написал эксплоит: 6 задач за 4 часа</h2><p>Команда Calif дала Claude доступ к оболочке, отладчику GDB, утилите ROPgadget (поиск «гаджетов» — коротких фрагментов кода в ядре, которые можно использовать для построения цепочки команд) и эмулятору QEMU. Задача: разработать рабочий эксплоит для CVE-2026-4747. За ~4 часа машинного времени Claude решил 6 нетривиальных задач.</p><h3>1. Настройка тестовой среды</h3><p>Claude развернул виртуальную машину FreeBSD с NFS, Kerberos и уязвимым модулем ядра. Модель учла, что VM нужно минимум 2 процессора — FreeBSD создаёт 8 NFS-потоков на каждый CPU.</p><h3>2. Многопакетная доставка шеллкода</h3><p>Шеллкод (432 байта) не помещается в один сетевой пакет. Claude разработал стратегию из 15 раундов:</p><ol><li>Первый раунд: сделать область памяти ядра исполняемой через pmap_change_prot</li><li>14 следующих раундов: записать шеллкод порциями по несколько десятков байт за пакет</li><li>Последний пакет запускает записанный шеллкод</li></ol><h3>3. Чистый выход из потока</h3><p>Каждое переполнение захватывает один NFS-поток ядра. Claude использовал kthread_exit() для корректного завершения каждого захваченного потока — чтобы сервер оставался работоспособным для следующего раунда.</p><h3>4. Отладка смещений стека</h3><p>Начальные смещения из дизассемблера оказались неверными. Claude отправил <b>De Bruijn-паттерны</b> — специальные последовательности, в которых каждая подстрока уникальна, что позволяет по крэш-дампу точно определить, какой байт попал на адрес возврата. Классический приём пентестеров, который Claude применил без подсказки.</p><h3>5. Переход из ядра в пользовательский режим</h3><p>NFS-потоки работают в режиме ядра и не могут напрямую запускать пользовательские программы. Claude нашёл решение через цепочку вызовов ядра FreeBSD:</p><ol><li>Создать новый процесс через kproc_create()</li><li>Заменить его на /bin/sh через kern_execve()</li><li>Сбросить внутренний флаг ядра, помечающий процесс как системный, чтобы он мог выполнять пользовательский код</li></ol><h3>6. Баг аппаратных точек останова</h3><p>Дочерний процесс падал с debug exception. Claude отследил проблему: регистр <b>DR7</b> (управляет аппаратными точками останова на x86) содержал устаревшие значения от отладчика DDB. Решение — очистить DR7 перед форком.</p><h2>Второй эксплоит — альтернативная стратегия</h2><p>Claude написал и второй эксплоит, использующий принципиально другой подход. Вместо запуска реверс-шелла (что требует многоэтапной доставки шеллкода и сложного перехода в пользовательский режим) — запись публичного SSH-ключа в .ssh/authorized_keys на сервере. Это проще: нужно записать всего ~400 байт текста в файл, без перехода из ядра в userland. Результат: 6 раундов вместо 15. Оба эксплоита дали полный root-доступ:</p><h2>Почему это важно для индустрии</h2><blockquote>Компьютеры всегда умели находить баги. Фаззеры вроде AFL и syzkaller обнаруживают уязвимости в ядрах уже больше десяти лет. Но найти баг и написать эксплоит — совершенно разные вещи. Разработка эксплоитов требует понимания внутренностей ОС, создания ROP-цепочек, управления расположением памяти, отладки крэшей и адаптации, когда что-то идёт не так. Это долго считалось рубежом, который могут пересечь только люди.</blockquote><p>Ключевое отличие от прошлых демонстраций ИИ в безопасности: Claude не просто сгенерировал код по шаблону. Модель <b>адаптировалась</b> к неожиданным проблемам в реальном времени — исправляла смещения стека через отладочные паттерны, находила баг с аппаратными регистрами, придумала нетривиальный переход из ядра в пользовательский режим. Каждая из этих задач раньше требовала многолетнего опыта в exploit development.</p><p>Для защитников это сигнал: окно между раскрытием уязвимости и появлением рабочего эксплоита сжимается с недель до часов. <a href="https://tproger.ru/news/axios-vzloman-na-npm---vredonosnye-versii-ustanavlivayut-rat-troya">Недавний взлом Axios на npm</a> показал, как быстро атакующие эксплуатируют цепочку поставок. Теперь ИИ может ускорить и разработку эксплоитов для ядер ОС.</p><p>Полный лог из 44 промптов и код обоих эксплоитов опубликованы в репозитории <a href="https://github.com/califio/publications">califio/publications</a> на GitHub.</p><h2>MAD Bugs — что дальше</h2><p>Calif объявил проект <b>MAD Bugs: Month of AI-Discovered Bugs</b> — до конца апреля 2026 года команда планирует опубликовать ещё несколько уязвимостей и эксплоитов, обнаруженных с помощью ИИ. Все находки проходят через ответственное раскрытие — CVE-2026-4747 был запатчен за 5 дней до публикации эксплоита.</p><h2>Что делать администраторам FreeBSD</h2><p>Если вы администрируете FreeBSD-серверы с NFS — <b>обновитесь</b> до последних патчей. Проверить, загружен ли уязвимый модуль:</p><p>Если модуль не используется — можно выгрузить его до обновления:</p><p>Подробности — в <a href="https://security.freebsd.org/advisories/FreeBSD-SA-26:08.rpcsec_gss.asc">бюллетене FreeBSD-SA-26:08</a>.</p><p>Если вы работаете с безопасностью — следите за проектом <a href="https://blog.calif.io">MAD Bugs</a>: граница между возможностями ИИ и задачами для людей продолжает <a href="https://tproger.ru/news/ne-doveryaj---proveryaj--sozdatel-curl-o-bezopasnosti-open-source">сдвигаться</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft переводит все приложения Windows 11 на нативный код — уходят от веб-обёрток</title>
      <link>https://tproger.ru/news/microsoft-perevodit-vse-prilozheniya-windows-11-na-nativnyj-kod---</link>
      <comments>https://tproger.ru/news/microsoft-perevodit-vse-prilozheniya-windows-11-na-nativnyj-kod---?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/microsoft-perevodit-vse-prilozheniya-windows-11-na-nativnyj-kod---</guid>
      <description><![CDATA[<p>Microsoft отказывается от веб-обёрток во встроенных приложениях Windows 11 — переход на нативный код. Разбираем, что известно и чего ждать разработчикам.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/microsoft-perevodit-vse-prilozheniya-windows-11-na-nativnyj-kod---">Microsoft переводит все приложения Windows 11 на нативный код — уходят от веб-обёрток</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Windows 11]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 31 Mar 2026 07:25:45 GMT</pubDate>
      <content:encoded><![CDATA[<p>Microsoft меняет курс: все приложения Windows 11 будут нативными. <b>Руди Хьюн</b> (Rudy Huyn), Partner Architect в Microsoft, <a href="https://www.techspot.com/news/111872-microsoft-plans-100-native-apps-windows-11-apps-major.html">объявил 26–27 марта 2026 года</a>, что собирает новую команду для перевода встроенных приложений Windows с веб-технологий на полностью нативный код.</p><p>Это ответ на многолетнюю критику: пользователи и разработчики жаловались, что встроенные приложения Windows 11 работают медленно, занимают много памяти и выглядят непоследовательно — потому что многие из них были построены на веб-обёртках (WebView, PWA (Progressive Web App), Chromium). Теперь Microsoft обещает <b>«100% native»</b>.</p><p>— Microsoft переводит все встроенные приложения Windows 11 на нативный код</p><p>— Уходят от веб-обёрток (WebView, PWA, Electron-подобные решения)</p><p>— Руди Хьюн (Partner Architect, автор File Explorer) собирает новую команду</p><p>— Ожидаются улучшения скорости запуска, потребления памяти и отзывчивости интерфейса</p><p>— Конкретные сроки и список приложений пока не объявлены</p><p>Веб-обёртка (web wrapper) — это приложение, которое выглядит как нативная программа, но внутри работает веб-страница во встроенном браузере (WebView или Chromium). Такой подход упрощает разработку, но приводит к повышенному потреблению памяти и медленному запуску по сравнению с нативным кодом.</p><h2>Что известно</h2><p>Руди Хьюн — архитектор, работающий над Microsoft Store и File Explorer — <a href="https://www.techspot.com/news/111872-microsoft-plans-100-native-apps-windows-11-apps-major.html">написал в X</a>, что набирает команду для создания нативных Windows-приложений. Ключевое требование к кандидатам: <b>«сильное продуктовое мышление»</b> — при этом опыт работы с платформой Windows явно не обязателен.</p><p>Инициатива вписывается в более широкую реструктуризацию Windows-команды:</p><ul><li><b>Паван Давулури</b> (EVP Windows &amp; Devices) возглавляет направление</li><li><b>Клинт Руткас</b> ведёт <a href="https://github.com/microsoft/WindowsAppSDK">WinAppSDK</a>, Terminal и PowerToys</li></ul><h2>От чего уходят</h2><p>Критике подвергаются приложения, построенные на веб-технологиях:</p><ul><li><b>Clipchamp</b> — видеоредактор на базе веб-технологий, потребляет значительно больше памяти, чем нативные аналоги</li><li><b>Copilot</b> — десктопное приложение, работающее как PWA (Progressive Web App)</li><li><b>WhatsApp для Windows 11</b> — обратный пример: изначально имел нативный интерфейс на WinUI, но затем был переведён на Chromium-обёртку, став медленнее</li></ul><p>Помимо отдельных приложений, Microsoft работает над ускорением базовых элементов системы: <b>уменьшение времени запуска File Explorer</b>, <b>ускорение контекстных меню</b>, перевод меню «Пуск» на WinUI.</p><h2>К чему идут</h2><p>Формулировка Хьюна — <b>«100% native»</b> — указывает на полный отказ от WebView-компонентов во встроенных приложениях. Конкретный технологический стек не назван, но контекст подсказывает направление:</p><ul><li><b>WinAppSDK</b> (Windows App SDK) — фреймворк для создания нативных Windows-приложений, развиваемый командой Клинта Руткаса</li><li><b>WinUI 3</b> — UI-фреймворк для нативных интерфейсов Windows</li><li><b>C++/WinRT и .NET</b> — нативные языковые привязки</li></ul><p>Что именно означает «100% native» на практике — пока не определено. Некоторые существующие «нативные» приложения Microsoft всё ещё используют WebView для отдельных компонентов.</p><h2>Почему это важно для разработчиков</h2><p>Переход Microsoft к нативным приложениям — сигнал для экосистемы. Если сама Microsoft отказывается от веб-обёрток в своих продуктах, это может повлиять на выбор технологий для сторонних разработчиков Windows-приложений.</p><p>Для тех, кто сейчас использует <a href="https://www.electronjs.org/">Electron</a> или WebView для Windows-приложений, стоит следить за развитием WinAppSDK — Microsoft явно делает ставку на этот фреймворк как основу для нативной разработки.</p><blockquote>В 2020 году Панос Панай говорил, что Microsoft хочет, чтобы пользователи «любили Windows, а не просто нуждались в ней». До сих пор видимых изменений было немного. Новая команда Хьюна — первая конкретная попытка выполнить это обещание.</blockquote><h2>Выводы</h2><p>Microsoft признала то, о чём разработчики говорили годами: веб-обёртки во встроенных приложениях Windows — компромисс, который перестал быть приемлемым. Переход на нативный код — правильное направление, но пока это скорее декларация намерений, чем готовый план с датами.</p><p>Для Windows-разработчиков это сигнал присмотреться к WinAppSDK и WinUI 3 — Microsoft явно инвестирует в этот стек как основу для будущих приложений.</p>]]></content:encoded>
    </item>
    <item>
      <title>Сообщество за считанные часы собрало $5 млн на новый Linux-смартфон от Jolla</title>
      <link>https://tproger.ru/news/soobshhestvo-za-schitannye-chasy-sobralo--5-mln-na-novyj-linux-smartfon-ot-jolla</link>
      <comments>https://tproger.ru/news/soobshhestvo-za-schitannye-chasy-sobralo--5-mln-na-novyj-linux-smartfon-ot-jolla?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/soobshhestvo-za-schitannye-chasy-sobralo--5-mln-na-novyj-linux-smartfon-ot-jolla</guid>
      <description><![CDATA[<p>Jolla запускает новый Linux-смартфон, профинансированный сообществом: открытость, приватность и альтернатива Android в 2026 году</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/soobshhestvo-za-schitannye-chasy-sobralo--5-mln-na-novyj-linux-smartfon-ot-jolla">Сообщество за считанные часы собрало $5 млн на новый Linux-смартфон от Jolla</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[5g]]></category>
      <category><![CDATA[Дизайн]]></category>
      <category><![CDATA[Смартфоны]]></category>
      <category><![CDATA[Процессор]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 08 Dec 2025 07:04:15 GMT</pubDate>
      <content:encoded><![CDATA[<p>Финская компания Jolla <a href="https://commerce.jolla.com/products/jolla-phone-preorder">объявила</a> о запуске нового смартфона на базе Linux. Причем финансирование на него собрало сообщество.</p><p>Кампания стартовала на Indiegogo, где Jolla запросила около <b>$5 млн</b>, чтобы начать производство первой партии устройств в 2026 году.</p><p>Jolla давно известна своим альтернативным взглядом на мобильные операционные системы. После экспериментов с Sailfish OS, компания решила вернуться к идее открытого смартфона, созданного при участии пользователей, а не крупных инвесторов.</p><h2>Что известно о новом Linux-смартфоне</h2><p>Устройство пока фигурирует под рабочим названием <b>Jolla Linux Phone</b>. Компания публикует рендеры: корпус в теплых оттенках, вертикальная камера, минималистичный дизайн.</p><p>Основной акцент — <b>на приватность, открытость и контролируемость пользовательских данных</b>. Все то, традиционно является сильными сторонами проектов на Linux.</p><p>По словам Jolla, смартфон будет работать на полностью открытом ПО. В отличие от Android-устройств, здесь обещают отсутствие трекинга и отсутствие зависимости от крупных облачных сервисов.</p><p>Под капотом ожидаются характеристики среднего уровня: энергоэффективный процессор, 5G, приличная батарея и камера, которой будет «достаточно для повседневной съемки».</p><p>Конкретных спецификаций пока нет — компания обещает раскрыть их после формирования первой производственной партии.</p><figure><img src="https://media.tproger.ru/user-uploads/111041/2025-12-08/c3ceedc5-d703-4e8d-a0ce-1ab82b9f828d.jpeg" alt="" /></figure><h2>Почему проект профинансировали так быстро</h2><p>Комьюнити Jolla исторически активно поддерживает независимые мобильные платформы.</p><p>На старте кампании фанаты буквально за часы обеспечили основную сумму, а обсуждения на форумах и в комментариях показывают, что запрос на долгожданную «альтернативу Android» вырос.</p><p>Пользователи пишут, что устали от закрытых экосистем, навязанных сервисов и ускоряющегося темпа устаревания смартфонов.</p><p>Кроме того, рынок Linux-смартфонов переживает второе дыхание: Purism Librem 5 и PinePhone доказали, что нишевые устройства могут найти аудиторию. Особенно если предлагают прозрачность, ремонтопригодность и независимость от крупных корпораций.</p><h2>Что дальше</h2><p>Jokka планирует начать производство в 2026 году. Первые прототипы будут представлены публике раньше — после завершения инженерной фазы.</p><p>Команда подчеркивает, что финальная конфигурация смартфона будет обсуждаться вместе с сообществом.</p>]]></content:encoded>
    </item>
    <item>
      <title>Обучение кибербезопасности и этичному хакерству: структура Linux</title>
      <link>https://tproger.ru/articles/obuchenie-kiberbezopasnosti-i-etichnomu-hakerstvu--struktura-linux</link>
      <comments>https://tproger.ru/articles/obuchenie-kiberbezopasnosti-i-etichnomu-hakerstvu--struktura-linux?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Иван Глинкин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/obuchenie-kiberbezopasnosti-i-etichnomu-hakerstvu--struktura-linux</guid>
      <description><![CDATA[<p>Из чего состоит операционная система Linux: изучаем её компоненты и файловую структуру. </p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/obuchenie-kiberbezopasnosti-i-etichnomu-hakerstvu--struktura-linux">Обучение кибербезопасности и этичному хакерству: структура Linux</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Информационная безопасность]]></category>
      <category><![CDATA[Кибербезопасность]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 05 Oct 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Я, Иван Глинкин, руководитель группы аппаратных исследований в Бастионе и автор канала <a href="https://t.me/EASM_HydrAttack">HydrAttack</a>, продолжаю свой цикл обучающих материалов для начинающих «белых» хакеров. Сегодня расскажу вам, из чего состоит операционная система Linux: изучим ее компоненты и файловую структуру. Понимание этих основ важно для дальнейшей работы с этой ОС.</p><h2>Структура Linux</h2><p>Linux — это многозадачная многопользовательская операционная система (ОС) с открытым исходным кодом. Она имеет модульную архитектуру и отличается высокой стабильностью и безопасностью. Рассмотрим подробнее основные компоненты, из которых состоит Linux.</p><h3>Компоненты</h3><p><b>Ядро</b> (Kernel) — это центральная часть ОС, которая управляет аппаратными ресурсами и взаимодействует с приложениями. Ядро выполняет следующие задачи:</p><p>●      управление памятью;</p><p>●      управление процессами — создание, планирование, завершение;</p><p>●      управление файлами и файловыми системами;</p><p>●      управление вводом/выводом — работа с устройствами, такими как жесткие диски, клавиатуры, мыши.</p><p>Ядро в Linux монолитное — это означает, что все основные функции, а именно управление памятью и устройствами, находятся в одном модуле. Однако оно поддерживает динамическую загрузку модулей, что делает его гибким.</p><p><b>Оболочка</b> (Shell) — интерфейс, который принимает команды от пользователя и передает их операционной системе для выполнения. Оболочка предоставляет пользователю командный интерфейс, который позволяет выполнять команды, запускать скрипты и управлять файлами. В Linux есть несколько оболочек:</p><p>●      Bash (Bourne Again Shell) — самая популярная оболочка в большинстве дистрибутивов Linux;</p><p>●      Zsh, Csh, Fish — другие распространенные оболочки. В рамках курса мы установим и настроим Zsh.</p><p><b>Системные библиотеки</b> — содержат функции и интерфейсы, которые могут использовать приложения для работы с ядром. Например, библиотека glibc является стандартной библиотекой C, используемой многими программами в Linux для выполнения таких базовых операций, как работа с файлами и памятью.</p><p><b>Драйверы устройств</b> — программные компоненты, которые позволяют ОС «общаться» с аппаратным обеспечением, например, сетевыми картами, жесткими дисками или видеокартами.</p><p><b>Системные утилиты</b> — помогают пользователю и системному администратору взаимодействовать с системой. Выполняют следующие базовые системные функции:</p><p>●      управление файлами (например, cp, mv, rm);</p><p>●      управление процессами (например, ps, top, kill);</p><p>●      работа с сетью (например, ping, ifconfig, netstat).</p><p><b>Файловая система</b> — определяет, как данные хранятся, организуются и управляются на диске. Linux поддерживает множество файловых систем: ext4, XFS, Btrfs и другие. Важная особенность файловых систем в Linux — поддержка виртуальных файловых систем, например, /proc и /sys, которые предоставляют информацию о состоянии системы и ядра.</p><p><b>Процессы</b> — это каждая программа или задача, запущенная пользователем или системой. Процессами управляет ядро — оно выделяет им ресурсы и при необходимости завершает их работу. Процессы могут быть как системными, так и пользовательскими.</p><p><b>Пакетные менеджеры</b> — системы управления пакетами для установки, обновления и удаления программного обеспечения. Позволяют автоматически разрешать зависимости между программами и поддерживать систему в актуальном состоянии. Примеры пакетных менеджеров:</p><p>●      APT для дистрибутивов на базе Debian (например, Ubuntu);</p><p>●      YUM или DNF для Red Hat и CentOS;</p><p>●      Pacman для Arch Linux.</p><h2>Файловая структура Linux</h2><p>При работе с Linux нужно держать в голове концепцию, которая лежит в основе системы: «Все — это файл». То есть любые данные, каталоги и процессы ОС можно выразить как поток байтов, занимающий определенный объем файловой системы на дисковом накопителе.</p><p>Следовательно, все, что занимает место, можно назвать файлом. А файлы в Linux структурированы следующим образом:<b></b></p><p><b>Обычные файлы:</b></p><p>○      текстовые;</p><p>○      бинарные;</p><p>○      файлы изображений;</p><p>○      архивы и т.п.</p><p><b>Специальные:</b></p><p>○      блочные для обозначения устройств (b);</p><p>○      символьные (с);</p><p>○      ссылочные для представления символьных ссылок (l);</p><p>○      файлы сокетов для связи между разными процессами и пр. (s).</p><p><b>Директории:</b></p><p>○      файлы, в которых хранятся другие файлы (d).</p><p>Файловая структура Linux организована по иерархическому принципу. Основным каталогом в ней выступает корень — /. В этой структуре каждый каталог или файл находится на определенном уровне и имеет свое предназначение. Вся информация от системных файлов до пользовательских данных хранится в строго определенных местах, что делает систему организованной и логически понятной.</p><p>Важно отметить, что в Linux нет понятий «дисков» (как C:\ в Windows), все данные организованы в рамках единого пространства имен файловой системы.</p><p>/ (<b>Корень</b>) — корневой каталог, который является основой файловой системы. От него исходят все остальные каталоги и файлы. В отличие от Windows, где каждый диск имеет свою букву, в Linux все файловые системы монтируются в дерево каталогов под корнем /.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/52206ee0-b79c-45c4-acf4-d4bcb8259352.png" alt="" /></figure><p><b>/bin</b>. В этом каталоге содержатся основные системные бинарные файлы, доступные для всех пользователей. Эти программы необходимы для базовой работы системы:</p><p>●      <b>ls</b> — вывод списка файлов;</p><p>●      <b>cp</b> — копирование файлов;</p><p>●      <b>mv</b> — перемещение файлов.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/6e1069f5-a60f-4fd1-8e5b-f110de0e8ac6.png" alt="" /></figure><p><b>/sbin</b>. Здесь находятся системные бинарные файлы, предназначенные для использования администраторами системы. Эти утилиты включают инструменты для настройки системы:</p><p>●      ifconfig — настройка сетевых интерфейсов;</p><p>●      fdisk — управление разделами диска.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/59081387-31ff-402f-abaf-d583194937a6.png" alt="" /></figure><p><b>/usr</b>. Один из самых больших и значимых каталогов. Здесь хранится программное обеспечение, библиотеки и данные, которые применяются всеми пользователями системы. В нём можно найти подкаталоги:</p><p>●      /usr/bin — бинарные файлы общего назначения;</p><p>●      /usr/sbin — утилиты для администрирования;</p><p>●      /usr/lib — библиотеки, необходимые для работы программ.</p><p>В каталоге /usr также есть директории, относящиеся к документации (/usr/share/doc), исходным кодам и другим ресурсам.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/0a91f8a2-e158-4167-8df3-2188ff721ce8.png" alt="" /></figure><p><b>/home</b>. Это домашний каталог для всех пользователей системы. Каждый пользователь имеет свою собственную папку вида /home/username, где он хранит личные файлы, настройки и данные. Этот каталог используется для организации данных каждого пользователя и гарантирует их изоляцию от системных файлов.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/8a1eaf3d-3227-46c5-b057-bbcebfdb3413.png" alt="" /></figure><p><b>/var</b>. Каталог, содержащий данные, которые изменяются во время работы системы. Сюда относятся логи, временные файлы, базы данных и другая информация, которая может расти в размере:</p><p>●      /var/log — логи системы и приложений;</p><p>●      /var/spool — данные для очередей печати и почтовых серверов.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/1743ac20-2738-4e36-a961-515cb04296eb.png" alt="" /></figure><p><b>/tmp</b>. Временное хранилище данных. Этот каталог используется программами для записи временных файлов, которые будут удалены при перезагрузке системы. Например, сюда могут сохраняться промежуточные результаты работы программ.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/5c5e726b-9659-4051-ad4f-886cb2b4c480.png" alt="" /></figure><p><b>/etc</b>. Это каталог с конфигурационными файлами системы и файлами установленных программ. Например:</p><p>●      /etc/passwd — файл с учетными записями пользователей;</p><p>●      /etc/hostname — имя текущего хоста (компьютера).</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/254df5db-9f96-48b1-810c-3cf5635677f0.png" alt="" /></figure><p><b>/lib</b>. Содержит системные библиотеки, которые необходимы для работы приложений и ядра. Например, файлы, необходимые для загрузки и выполнения программ, которые находятся в каталогах /bin и /sbin.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/bb17d403-0efc-4f54-a3d0-4ae9e2111930.png" alt="" /></figure><p><b>/dev</b>. Здесь находятся «файлы устройств». В Linux устройства, например, жесткие диски, клавиатуры или порты, представлены в виде файлов, что позволяет работать с ними так же, как с обычными файлами. Примеры файлов устройств:</p><p>●      /dev/sda — первый жесткий диск;</p><p>●      /dev/ttyS0 — последовательный порт.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/ea1feeda-1fe6-43e6-bc47-9166d5546725.png" alt="" /></figure><p><b>/mnt</b> и <b>/media</b>. Эти каталоги используются для монтирования временных файловых систем, таких как USB-накопители, DVD-диски или сетевые ресурсы. Пример: когда подключается USB-диск, его содержимое может быть смонтировано в /media/username/usb. В моем случае к виртуальной машине подключена общая папка, расположенная на хостовой машине под названием Pentesting.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/2d66c9e6-09e3-46b5-8c65-f97bc52b0dcc.png" alt="" /></figure><p><b>/opt</b>. В этом каталоге устанавливаются сторонние приложения, которые не являются частью базовой системы. Это место для установки программ, не следующим стандартным правилам размещения файлов в системе.</p><p>К сожалению, у меня на Linux пока ничего не установлено, поэтому давайте посмотрим, что творится на Mac.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/c436e5b0-27ee-41d6-9b55-8b0645575189.png" alt="" /></figure><p><b>/root</b>. Домашний каталог суперпользователя (root). В отличие от обычных пользователей, root имеет доступ ко всей системе и может выполнять любые задачи. Каталог /root обычно изолирован от других пользовательских данных.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/d481f963-f46a-4303-9ef6-513259d61b71.png" alt="" /></figure><p><b>/proc </b>и<b> /sys</b>. Это виртуальные файловые системы, которые содержат данные о системе и ее состоянии. Эти каталоги создаются и обновляются ядром на лету:</p><p>●      /proc — содержит информацию о процессах, использовании ресурсов и состоянии системы;</p><p>●      /sys — предоставляет доступ к информации о железе и управлению устройствами.</p><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/a2f2add0-86aa-4dad-aba2-7bf770c9ff8e.png" alt="" /></figure><figure><img src="https://media.tproger.ru/user-uploads/115164/2025-09-19/65b0bd17-a44e-4f2d-bc7d-dff1f3b8227a.png" alt="" /></figure><p>Файловая структура Linux следует стандарту <b>FHS </b>(Filesystem Hierarchy Standard), который определяет, где должны находиться файлы и каталоги. Этот стандарт соблюдается большинством дистрибутивов, что делает систему предсказуемой для администраторов и разработчиков.</p><p><b>Особенности и преимущества структуры:</b></p><p>1.     Унификация — вся файловая система выглядит, как единое дерево, что позволяет легко ориентироваться и монтировать различные устройства.</p><p>2.     Безопасность — пользователи имеют доступ только к своим каталогам, что защищает системные файлы от случайного повреждения.</p><p>3.     Гибкость — легко монтировать дополнительные файловые системы, сетевые диски и внешние устройства в любую часть структуры.</p><p>Цель файловой структуры Linux — обеспечить четкое разделение системных и пользовательских данных, облегчить управление системой и повысить ее безопасность.</p><p>Сегодня мы узнали, из каких компонентов состоит ОС Linux и изучили ее иерархически организованную файловую структуру. Понимание ее организации поможет успешно решать стоящие перед вами задачи. Следите за следующими выпусками моего обучающего цикла статей по кибербезопасности и этичному хакерству.</p>]]></content:encoded>
    </item>
    <item>
      <title>Mac OS 7 (1991) портировали на x86 без исходников — ИИ справился всего за 3 дня</title>
      <link>https://tproger.ru/news/mac-os-7--1991--portirovali-na-x86-bez-ishodnikov---ii-spravilsya-vsego-za-3-dnya</link>
      <comments>https://tproger.ru/news/mac-os-7--1991--portirovali-na-x86-bez-ishodnikov---ii-spravilsya-vsego-za-3-dnya?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/mac-os-7--1991--portirovali-na-x86-bez-ishodnikov---ii-spravilsya-vsego-za-3-dnya</guid>
      <description><![CDATA[<p>Разработчица с помощью ИИ за 3 дня портировала Mac OS 7 на x86 без исходников: система запускается в QEMU с рабочим Finder и GUI</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/mac-os-7--1991--portirovali-na-x86-bez-ishodnikov---ii-spravilsya-vsego-za-3-dnya">Mac OS 7 (1991) портировали на x86 без исходников — ИИ справился всего за 3 дня</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Apple]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[macOS]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 30 Sep 2025 11:08:58 GMT</pubDate>
      <content:encoded><![CDATA[<p>Разработчица Келси Дэвис <a href="https://zenodo.org/records/17196870">воспользовалась</a> ИИ для портирования <b>Macintosh System 7</b>.</p><p><b>В результате процесс переноса</b> культовой ОС Apple из 1990-х на архитектуру <b>x86 занял всего три дня</b>.</p><p>Важный момент — у нее <b>не было доступа к исходникам системы</b>. Весь процесс был выполнен с помощью <b>дизассемблера Ghidra и LLM</b>.</p><h2>Почему это важно</h2><p>Оригинальные Маки работали на <b>процессорах Motorola 68K</b> и совершенно несовместимы с x86.</p><p>Портировать старую ОС — задача крайне нетривиальная даже с полным доступом к исходному коду. В случае System 7 этого не было — только <b>бинарники</b>, которые пришлось реверс инженирить, <b>анализировать и воссоздавать</b> вместе с LLM.</p><h2>Как происходил процесс портирования</h2><ul><li>Келси использовала <b>Ghidra</b> для дизассемблирования оригинального кода System 7.</li><li>Языковая модель (название не уточняется) помогала <b>анализировать бинарники</b>, <b>восстанавливать логику функций</b>, подсказывать реализацию <b>аппаратных интерфейсов</b> и даже <b>находить ошибки</b>.</li><li>Результат был собран под <b>QEMU</b> — в эмуляторе система запускается с работающим <b>Finder</b> и полноценным <b>GUI</b>.</li></ul><blockquote>Без ИИ это заняло бы у меня годы. Но с ним я справилась за три дня</blockquote><h2>Что в итоге</h2><p>Рабочая версия Mac OS 7 на x86 уже выложена на <a href="https://github.com/Kelsidavis/System7">GitHub</a> (с возможными правовыми оговорками).</p><p>Запустить ее можно в QEMU, а при желании адаптировать и для реального «железа».</p>]]></content:encoded>
    </item>
    <item>
      <title>Рынок ПО и ИТ-услуг: какие аналоги зарубежных сервисов существуют и что из них входит в Реестр российского ПО</title>
      <link>https://tproger.ru/articles/rynok-po-i-it-uslug--kakie-analogi-zarubezhnyh-servisov-sushhestvuyut-i-chto-iz-nih-vhodit-v-reestr-rossijskogo-po</link>
      <comments>https://tproger.ru/articles/rynok-po-i-it-uslug--kakie-analogi-zarubezhnyh-servisov-sushhestvuyut-i-chto-iz-nih-vhodit-v-reestr-rossijskogo-po?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Светлана Гринь]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/rynok-po-i-it-uslug--kakie-analogi-zarubezhnyh-servisov-sushhestvuyut-i-chto-iz-nih-vhodit-v-reestr-rossijskogo-po</guid>
      <description><![CDATA[<p>Российский рынок ПО и ИТ-услуг переживает масштабное импортозамещение. Разбираем ключевые сегменты, ведущих игроков, роль Реестра российского ПО и примеры отечественных аналогов мировых сервисов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/rynok-po-i-it-uslug--kakie-analogi-zarubezhnyh-servisov-sushhestvuyut-i-chto-iz-nih-vhodit-v-reestr-rossijskogo-po">Рынок ПО и ИТ-услуг: какие аналоги зарубежных сервисов существуют и что из них входит в Реестр российского ПО</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Опрос]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[Oracle]]></category>
      <category><![CDATA[Сервисы]]></category>
      <category><![CDATA[Информационная безопасность]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 22 Sep 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>После ухода зарубежных вендоров российские компании и госструктуры ищут замену привычным продуктам, а отечественные разработчики занимают освободившиеся ниши. Какие решения уже доказали свою эффективность, а где пока остаются пробелы? Разбираемся в результатах <a href="https://b1.ru/insights/news/media-center/b1-software-and-it-services-in-russia-research-press-release-18-august-2025/">исследования</a> рынка ПО и IT-услуг от Б1 и оцениваем перспективы отрасли.</p><h2>Текущее состояние рынка и основные тренды рынка ПО и IT-услуг</h2><p>Группа компаний Б1 представила исследование российского рынка ПО и ИТ-услуг. По итогам 2024 года объём рынка ИТ-услуг (без информационной безопасности) достиг 638 млрд ₽, увеличившись за два года почти в 1,4 раза. Более 150 млрд ₽ пришлись на заказную разработку и проектное ПО.</p><p>Тиражное ПО росло ещё быстрее: с 287 до 448 млрд ₽ (примерно +60 % за 2022–2024 гг.). Сильнее всего прибавили вендоры системного ПО, СУБД и инструментов для управления данными и приложениями (до 40–55 % в год).</p><p>Коммерческий ИТ-рынок (без инсорсинга, то есть внутренних разработок) в 2024 году превысил 2,2 трлн ₽, а с учётом внутренних разработок — 2,8 трлн ₽, показывая среднегодовой рост около 22 %. ИТ-услуги и тиражное ПО суммарно составляют около 1,1 трлн рублей или около 48% от указанной суммы. Другие сегменты: оборудование инфраструктуры ИТ и ПК, ИТ-обучение и информационная безопасность. К 2032 году объём всей отрасли может превысить 6,5 трлн ₽ (коммерческий сегмент — 5,2 трлн ₽) при среднем долгосрочном росте около 11 %.</p><figure><img src="https://media.tproger.ru/user-uploads/115279/2025-09-17/c2f962e9-1ebe-459f-9b4a-5f8240093c61.jpg" alt="" /><figcaption>Слайд исследования Б1</figcaption></figure><p>Прогнозы:</p><p>По данным исследования, российский рынок ИТ-услуг и программного обеспечения остаётся фрагментированным. Заметные доли есть лишь у немногих лидеров, а основная часть распределена между десятками и сотнями компаний.</p><ul><li>IT-услуги. Крупнейшие игроки — Ланит (около 8 %), Лига Цифровой Экономики (4 %) и Группа Softline(4 %). Все остальные компании занимают не более 3 % каждая.</li><li>Тиражное ПО. Здесь впереди 1С и СКБ Контур (по 6 %), а также Яндекс (5 %). Оставшиеся 83 % рынка делят между собой многочисленные разработчики.</li><li>Заказная разработка. Лидер — FabricaONE.AI с долей около 11 %. Далее идут БФТ Холдинг (7 %), Ланит и Лига Цифровой Экономики (по 6 %).</li><li>ПО для работы с документами и СЭД. Это наиболее концентрированный сегмент: на десятку ведущих компаний — СКБ Контур, Тензор, Сбер Корус и другие — приходится порядка 81 % всего рынка.</li><li>Бизнес-ПО. Здесь, напротив, конкуренция особенно высока: совокупная доля топ-10 компаний (1С, ЦФТ, Диасофт и др.) не превышает 40 %.</li></ul><p>Российский IT-рынок сочетает зоны, где уже много конкурентов, с сегментами, где ещё есть пространство для новых решений и стартапов.</p><figure><img src="https://media.tproger.ru/user-uploads/115279/2025-09-17/d781d594-900e-493e-a977-5eca39cd3ffc.jpg" alt="" /><figcaption>Слайд исследования Б1</figcaption></figure><h2>Реестр российского ПО: значение и преимущества для вендоров</h2><p>Ключевой инструмент импортозамещения — <a href="https://reestr.digital.gov.ru/">Реестр российского программного обеспечения</a>, который ведёт Минцифры. В него на сентябрь 2025 года включено уже 27 572 решения.</p><figure><img src="https://media.tproger.ru/user-uploads/115279/2025-09-17/1446c114-5b24-4bb5-b1f9-902d7d21dde7.png" alt="" /><figcaption>Главная страница Реестра российского ПО</figcaption></figure><p>Для бизнеса включение ПО в реестр даёт преференции. Главное преимущество — освобождение от НДС, что позволяет снизить цену на софт или увеличить маржу. Ещё один важный плюс — доступ к госзакупкам. Продукт из реестра можно предлагать государственным заказчикам. Кроме того, наличие решения в реестре упрощает получение ИТ-аккредитации, так как её можно оформить без подтверждения уровня зарплат работников. Наконец, такие компании могут претендовать на государственные гранты и субсидии.</p><p>Чтобы попасть в реестр, разработчику нужно доказать следующие факты:</p><ul><li>исключительные права на продукт принадлежат российской компании или гражданину РФ;</li><li>исходный код и ключевые технологии находятся в России;</li><li>сервисы и данные хранятся на отечественных серверах;</li><li>в составе продукта нет критических зарубежных компонентов, влияющих на работоспособность;</li><li>продукт должен быть доступным для внешних пользователей, в том числе госструктур;</li><li>программа или база данных должна распространяться как законченный продукт, то есть скачиваться единым пакетом или записываться на носитель;</li><li>отчисления за границу (лицензии, обязательные сервисы) не должны превышать 30 % выручки;</li><li>запрещено строить продукт на коммерческих СУБД и других платных платформах;</li><li>все компоненты используются правомерно на основании открытой лицензии или лицензионного договора;</li><li>у ИТ-компании есть действующий сайт.</li></ul><p>Есть и обязательные требования к компании-разработчику:</p><ul><li>Не менее 50 % уставного капитала должны принадлежать гражданам РФ.</li><li>Более 70 % прибыли от продажи продукта должны оставаться у российских правообладателей.</li><li>Гарантийное обслуживание и техническая поддержка должны выполняться на территории России или российскими гражданами.</li></ul><p><i>«Реестр — важный инструмент формализации. Он задаёт правила игры и открывает доступ к крупным тендерам. Кроме того, для заказчиков ключевое значение имеют реальные кейсы, SLA и зрелость экосистемы. Поэтому можно сказать, что реестр отражает формальную сторону, а реальная картина все же формируется на уровне практических внедрений. При этом сам реестр структурирует рынок и его игроков, фиксирует перечень решений и помогает государству понимать, какие классы ПО уже готовы к внедрению, а какие требуют инвестиций»</i>, — отмечает <b>Сергей Лебедев</b>, коммерческий директор GreenData.</p><p><i>«Реестр отечественного ПО отражает картину рынка всё лучше, но всё ещё далеко не полностью и с искажениями. Например, всё, что касается сегмента B2G, госзакупок —  реестр на 100% актуален. Все операционные системы, офисные пакеты, системы защиты информации и СУБД включены в реестр. Онидеально отражает рынок импортозамещения по тем вопросам, которые необходимы для того, чтоб компании осуществляли основную деятельность. </i></p><p><i>Что касается слабых мест реестра, здесь  плохо выражена ситуация на коммерческом рынке. Например, нишевые SaaS-решения, маркетплейсы, сервисы онлайн-образования, некоторые CRM могут не проходить сложную процедуру внесения, так как их клиентам это не нужно. Аналогичная ситуация и в геймдев. Приложения доставки, каршеринг — их присутствие в реестре не отражает их в реальной доле рынка»</i>, — комментирует <b>Алексей Флоринский,</b> генеральный директор компании-разработчика заказного программного обеспечения SimbirSoft.</p><h2>Российские аналоги популярных зарубежных сервисов</h2><p>Сегодня в России уже есть полноценные аналоги многих видов программного обеспечения.</p><p><b>Офисные пакеты.</b> Для работы с документами и совместного редактирования всё чаще выбирают МойОфис и Р7 Офис. Эти платформы заменяют Microsoft 365 и Google Workspace, так как поддерживают текстовые редакторы, таблицы, презентации, корпоративную почту и чаты. Продукты сертифицированы для использования в госструктурах, обеспечивают хранятение данныех на российских серверах и отвечают требованиям ИБ.</p><p><i>«В части инфраструктурных сервисов есть широкий выбор, но далеко не все организации решаются массово отказываться от Microsoft и переходить на решения на базе Linux или к отечественным вендорам. Схожая ситуация наблюдается в сегменте корпоративной почты и файловых хранилищ, замещение пока не достигло прежней глубины»</i>, — рассказывает <b>Максим Завьял</b>ов, руководитель практики импортозамещения K2 Cloud.</p><p><b>Облачные сервисы.</b> Сегмент облаков в России растёт особенно быстро. Среди крупнейших игроков: VK Cloud, Яндекс Облако, СберОблако. Они предоставляют вычислительные мощности, хранилища, сервисы машинного обучения и аналитики, заменяя AWS, Azure и Google Cloud.</p><p><b>Мессенджеры и сервисы для совместной работы.</b> Для видеоконференций и командной работы можно использовать TrueConf, ТамТам и Яндекс Телемост. Эти решения предлагают стабильную связь, групповые чаты и совместный доступ к файлам.</p><p><b>Базы данных.</b> Вместо зарубежных СУБД компании переходят на Postgres Pro и СУБД ЛИНТЕР. Они совместимы с экосистемой PostgreSQL, поддерживают масштабируемые кластеры, инструменты резервного копирования и репликации.</p><p><b>CRM и ERP.</b> Наиболее востребованные продукты — 1С, Terrasoft (Creatio) и «Галактика ERP». Они закрывают задачи учёта, автоматизации продаж, документооборота и планирования ресурсов предприятия, выступая полноценной заменой SAP, Oracle и Salesforce.</p><p><i>«Во всех сегментах сейчас особо актуален вопрос замещения ERP-систем, которые установлены практически в каждом предприятии в том или ином виде и позволяют автоматизировать часть внутренних процессов, сформировать систему отчётности. Область ERP-решений долгое время считалась в России отстающей на фоне SAP и Oracle. Однако на данный момент наши решения, такие как 1C, “Галактика ERP”, напрямую конкурируют с западными интеграторами., Ммногие отечественные компании делают осознанный выбор в пользу российских платформ»</i>, — отмечает <b>Даниил Летин</b>, руководитель дирекции по развитию бизнеса в IBS.</p><p><b>DevOps и CI/CD.</b> Для управления исходным кодом и автоматизации развёртывания появились платформы GitFlic, GitVerse и VK Code, которые поддерживают приватные репозитории, пайплайны CI/CD и интеграцию с популярными системами контроля версий.</p><p><b>Информационная безопасность.</b> Российский сектор ИБ традиционно силён. Продукты Лаборатории Касперского и Positive Technologies обеспечивают защищают инфраструктуру, анализируют уязвимости и мониторят инциденты.</p><p><i>«Говоря о сегментах, которые чувствуют себя наиболее устойчиво, стоит выделить именно сферу кибербезопасности — здесь переход на российские продукты прошел относительно спокойно»</i>, — считает <b>Максим Завьялов</b>.</p><h2>Где ещё есть сложности?</h2><p>Российские аналоги уже успешно заменяют зарубежные продукты в госсекторе, банках, телекоме, ритейле и промышленности. Тем не менее, остаются направления и ниши, где полной замены пока нет.</p><p><i>«Наиболее устойчиво чувствуют себя платформенные решения — low-code, интеграционные слои, банковские продукты. У этих продуктов есть очевидная ценность — это ускоренный time-to-market, прозрачность процессов, поддержка композитной архитектуры. При этом в зоне риска находятся нишевые SaaS-сервисы, сильно зависимые от международных экосистем. Там всё ещё есть барьеры по сертификации, поддержке и интеграции. Поэтому именно платформенный класс решений формирует фундамент устойчивости российского рынка»</i>, — делится <b>Сергей Лебедев</b>.</p><p><i>«В зоне риска остаются высоконагруженные отраслевые решения, связанные с промышленным производством, инженерным моделированием, сложными CAD/CAM-системами. Там барьер входа слишком высок, и полного импортозамещения пока нет»</i>, — отмечает <b>Елена Титова</b>, генеральный директор компании Стеллар.</p><p>Что касается сервисов для рабочих задач, здесь тоже пока остаются незакрытые потребности в софте. Например, <b>Алексей Ровдо</b>, главный аналитик ИТ-интегратора AWG, отмечает нехватку альтернатив ряда сервисов: <i>«Github и частные репозитории для совместной работы над исходным кодом, групповые видеоконференции Zoom, а также онлайн-сервис для создания диаграмм draw.io. При этом российский рынок активно работает в этом направлении и уже предлагает перспективные разработки, такие как Яндекс.Телемост»</i>. По словам коммерческого директора UDV Group <b>Илоны Киреёнок</b>, не хватает <i>«серьёзных корпоративных инструментов вроде полноценной почтовой системы, системы каталогов, управления учетными записями и т.д.»</i>.</p><p><i>«Нам не хватает решений, которые в полной мере закрыли бы экосистему продуктов Microsoft с точки зрения интеграции пользовательских сервисов, ОС и систем компании», — ком</i>ментирует <b>Андрей Каплин</b>, руководитель направления инфраструктурного ПО компании «ГИГАНТ Компьютерс».</p><p>Несмотря на сложности, большинство экспертов с оптимизмом относятся к импортозамещению в сфере ПО и ИТ-услуг: <i>«Ранее российский рынок ПО уступал в масштабах мировому рынку и занимал ограниченную долю — на нём крупные вендоры получали лишь 1–2% своей выручки. Хотя сокращение рынка вызвало определённые трудности, одновременно оно открыло возможности для трансформации отрасли в России. Изоляция российского рынка привела к резкому росту отечественных игроков и решений, появлению локальных лидеров, таких как “Группа Астра”, “НКТ” и другие»</i>, — подчёркивает <b>Алексей Ровдо</b>, главный аналитик ИТ-интегратора AWG.</p>]]></content:encoded>
    </item>
    <item>
      <title>Линус Торвальдс назвал RISC-V патчи «мусором» и отказался принять их в Linux 6.17</title>
      <link>https://tproger.ru/news/linus-torvalds-nazval-risc-v-patchi--musorom--i-otkazalsya-prinyat-ih-v-linux-6-17</link>
      <comments>https://tproger.ru/news/linus-torvalds-nazval-risc-v-patchi--musorom--i-otkazalsya-prinyat-ih-v-linux-6-17?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/linus-torvalds-nazval-risc-v-patchi--musorom--i-otkazalsya-prinyat-ih-v-linux-6-17</guid>
      <description><![CDATA[<p>Линус Торвальдс отклонил патчи RISC-V для Linux 6.17, назвав их «мусором», и предупредил: поздние и некачественные изменения принимать не будет</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/linus-torvalds-nazval-risc-v-patchi--musorom--i-otkazalsya-prinyat-ih-v-linux-6-17">Линус Торвальдс назвал RISC-V патчи «мусором» и отказался принять их в Linux 6.17</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 11 Aug 2025 04:27:26 GMT</pubDate>
      <content:encoded><![CDATA[<p>Создатель Linux Линус Торвальдс <a href="https://lore.kernel.org/lkml/CAHk-=wjLCqUUWd8DzG+xsOn-yVL0Q=O35U9D6j6=2DUWX52ghQ@mail.gmail.com/">отклонил</a> первую партию патчей для архитектуры RISC-V, предложенных для включения в ядро версии 6.17.</p><p>В письме-рассылке разработчиков ядра он назвал представленный набор изменений «мусором» и заявил, что принимать его в текущем цикле не будет.</p><p>Поводом стала не только техническая оценка кода, но и нарушение сроков: Торвальдс ранее просил отправлять пул-реквесты заранее, так как находится в поездке.</p><p><i>«Если уж не можете следовать этому правилу, то хотя бы присылайте качественные изменения»</i>, — написал он.</p><h2>Критика за «бесполезный хелпер»</h2><p>Отдельно Торвальдс раскритиковал появление функции make_u32_from_two_u16() в общих заголовках, которая собирает 32-битное значение из двух 16-битных. По его словам, такой «хелпер» делает код менее читаемым и только ухудшает ситуацию:</p><blockquote>Если вы пишете <b>(a &lt;&lt; 16) + b</b>, сразу видно, что происходит. А вызов <b>make_u32_from_two_u16(a,b)</b> не дает никакого понимания порядка байт. Это делает мир хуже</blockquote><p>Он также подчеркнул, что подобные утилиты не должны попадать в общие (не RISC-V-специфичные) заголовки. И уж точно не в конце merge-окна.</p><h2>Жесткое предупреждение</h2><p>Торвальдс предупредил сопровождающего RISC-V-ветки Пальмера Даббелта, что в будущем не примет ни поздние пул-реквесты, ни «мусор» за пределами архитектурно-специфичных частей.</p><p>Попытки протолкнуть большие изменения в последний момент он назвал «неудачной стратегией».</p><p>Разработчикам RISC-V, в свою очередь, придется повторить попытку в цикле Linux 6.18. Правда, уже в начале merge-окна и без спорных изменений.</p>]]></content:encoded>
    </item>
    <item>
      <title>ЕГЭ могут перевести на Astra Linux и РЕД ОС — Windows предложили запретить</title>
      <link>https://tproger.ru/news/--ege-mogut-perevesti-na-astra-linux-i-red-os---windows-predlozhili-zapretit</link>
      <comments>https://tproger.ru/news/--ege-mogut-perevesti-na-astra-linux-i-red-os---windows-predlozhili-zapretit?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/--ege-mogut-perevesti-na-astra-linux-i-red-os---windows-predlozhili-zapretit</guid>
      <description><![CDATA[<p>ЕГЭ в России могут перевести с Windows на Astra Linux, РЕД ОС и другие отечественные системы. АРПП предложила запретить иностранное ПО на экзаменах из-за требований импортозамещения и защиты данных</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/--ege-mogut-perevesti-na-astra-linux-i-red-os---windows-predlozhili-zapretit">ЕГЭ могут перевести на Astra Linux и РЕД ОС — Windows предложили запретить</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 14 Jul 2025 11:48:34 GMT</pubDate>
      <content:encoded><![CDATA[<p>Ассоциация разработчиков программных продуктов (АРПП) «Отечественный софт» <a href="https://www.rbc.ru/technology_and_media/11/07/2025/686fba269a79473f48745ff1">обратилась</a> к Минцифры, Рособрнадзору и Минпросвещения с предложением проводить ЕГЭ только на российских операционных системах.</p><p>Сейчас методические рекомендации Рособрнадзора предписывают использовать исключительно Windows, что, по мнению ассоциации, противоречит законодательству.</p><h2>Почему это важно</h2><p>С 1 января 2025 года действует указ президента, запрещающий использование иностранного ПО в органах госвласти и критической инфраструктуре. По мнению АРПП, проведение ЕГЭ на Windows нарушает:</p><ul><li>требования по импортозамещению;</li><li>требования по защите персональных данных;</li><li>госполитику в части цифрового суверенитета.</li></ul><p>Кроме того, разработчики указали на финансовые и образовательные риски:</p><ul><li>поставки и обновления Windows могут быть прекращены из-за санкций;</li><li>использование Windows требует ежегодных бюджетных трат на лицензии;</li><li>школьники и учителя не получают опыта работы с отечественными системами.</li></ul><h2>Что предлагают</h2><p>Представители АРПП предложили использовать отечественные ОС. Например, Astra Linux, РЕД ОС, ALT Linux и «РОСА ОС». При этом параллельно закрепить в методических рекомендациях применение российского офисного софта (например, «Р7 Офис» или «МойОфис»).</p><p>Также в АРПП отметили важность создания тестовой зоны для проверки совместимости экзаменационных систем с российскими ОС. Ну и, в конце концов, исключить упоминания Windows из официальных документов по проведению ЕГЭ.</p><blockquote>Если говорить про «Астру» в школах — она уже введена. Введены системы МОС. Они уже вовсю работают с отсмотром мониторов школьников и система показывала себя более чем достойно.<br /><br />Вопрос в том, что МОС — штука московская. А вот что будет в регионах — это большой вопрос. Вопрос порой может переходить в то русло, что ранее в школы закупали Макбуки и героически переводили их на винду. А вот как на старый Мак встанет новая «Астра» — опять же вопрос. <br /><br />Понятно, что этот он решится и спустя лет пять школьники будут писать все на «Астре» или «РЕДе», но вот то, что этот процесс произойдёт в ближайший год-два — это сильно вряд ли. <br /><br />Минобразования должно перевести не только системы на российские, но и поставить отечественное оборудование. И вот когда оно доберется до всех (даже отдаленных регионов), вот тогда может возникнуть вопрос в «Астре» и единой инфраструктуре, как это было с ЕМИАСом.</blockquote><h2>Что дальше</h2><p>Минцифры уже подтвердило, что в реестре отечественного ПО есть решения для образования. А планы по переходу на российские ОС в процессе сдачи ЕГЭ обсуждаются с 2021 года, однако пока сохраняется зависимость от Windows.</p><p>Принудительный перевод ЕГЭ на российские операционные системы — вопрос времени. Подход оправдан с точки зрения законодательства, но его реализация потребует времени и доработки инфраструктуры.</p><p>Стоит ли это рисков или разумнее оставить Windows — вопрос открытый.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как работают SSL/TLS сертификаты и зачем они нужны</title>
      <link>https://tproger.ru/articles/kak-rabotayut-ssl-tls-sertifikaty-i-zachem-oni-nuzhny</link>
      <comments>https://tproger.ru/articles/kak-rabotayut-ssl-tls-sertifikaty-i-zachem-oni-nuzhny?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Денис Кудерин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-rabotayut-ssl-tls-sertifikaty-i-zachem-oni-nuzhny</guid>
      <description><![CDATA[<p>Что такое SSL/TLS сертификаты. Показываем, как работают сертификаты для сайта. Рассматриваем преимущества и основные нюансы ✔ Tproger</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-rabotayut-ssl-tls-sertifikaty-i-zachem-oni-nuzhny">Как работают SSL/TLS сертификаты и зачем они нужны</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[SQL]]></category>
      <category><![CDATA[Браузеры]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[Wi-Fi]]></category>
      <category><![CDATA[QA]]></category>
      <category><![CDATA[Взлом]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 04 Jun 2025 12:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>В сети ежесекундно происходят миллионы транзакций и передаются конфиденциальные данные, поэтому вопрос безопасности соединений входит в число базовых требований к веб-ресурсам. Сертификаты SSL/TLS шифруют данные пользователя, подтверждают защищенность сетевого подключения и подлинность сайтов. Это базовые протоколы взаимодействия браузеров и серверов, которые представляют собой основу безопасности в интернете.</p><p>В этой статье мы разберем не только принципы работы SSL/TLS, но и практические аспекты: как выбрать подходящий тип сертификата, как избежать распространенных ошибок настройки и проверить безопасность существующего соединения.</p><h2>Что такое SSL/TLS сертификат</h2><p>Еще десять лет назад протокол HTTPS использовали преимущественно банки и платежные системы. Сегодня даже простейший блог без шифрования трафика вызывает предупреждения в браузерах и теряет доверие посетителей.</p><p>SSL/TLS сертификаты для каждого сайта выполняют три важные функции: обеспечивают шифрование данных, подтверждают подлинность сайта и гарантируют целостность передаваемой информации. Без них любая форма авторизации или даже обычная переписка становятся уязвимыми для перехвата. Особенно актуально это в эпоху публичных Wi-Fi сетей и сложных цепочек маршрутизации, когда трафик может проходить через десятки промежуточных узлов.</p><p>Технологии защиты постоянно развиваются. Если в 2010-х основным стандартом был TLS 1.2, то сейчас все больше ресурсов переходят на TLS 1.3 с его оптимизированным «рукопожатием» и отказом от устаревших алгоритмов. Параллельно ужесточаются требования поисковых систем — Google еще в 2018 году начал помечать HTTP-сайты как небезопасные, в 2025 году такие ресурсы практически не имеют шансов попасть в топ выдачи.</p><p>Но важность SSL/TLS выходит за рамки технических аспектов. Для пользователей значок замка в адресной строке стал визуальным маркером доверия. Исследования показывают, что около 85% посетителей сразу покидают сайт при появлении предупреждения о небезопасном соединении. В коммерческих проектах это напрямую влияет на конверсию и доходы.</p><p>SSL/TLS сертификат — это цифровой документ, который связывает криптографический ключ с доменным именем, подтверждая его подлинность и обеспечивая шифрование данных. По сути, это гарантия того, что сайт, с которым взаимодействует пользователь, действительно принадлежит заявленной организации, а передаваемая информация защищена от перехвата.</p><p>Сертификат содержит несколько ключевых элементов:</p><ul><li>Публичный ключ — используется для шифрования данных, отправляемых на сервер.</li><li>Данные владельца — информация о компании или физическом лице, которому выдан сертификат.</li><li>Цифровую подпись центра сертификации (CA) — подтверждает, что документ был проверен и подписан доверенным удостоверяющим центром.</li><li>Срок действия — обычно от нескольких месяцев до нескольких лет, после чего требуется обновление.</li></ul><p>Выдачей SSL/TLS сертификатов занимаются центры сертификации (Certificate Authorities, CA). Это организации вроде DigiCert, Sectigo или Let’s Encrypt, чьи корневые сертификаты предустановлены в браузерах и операционных системах. Если CA подтверждает валидность домена и, при необходимости, проверяет юридические данные владельца, он выпускает сертификат, который браузеры распознают как доверенный.</p><p>Хотя аббревиатура SSL (Secure Sockets Layer) до сих пор широко используется, сам протокол считается устаревшим с 2015 года из-за уязвимостей. Его современная замена — TLS (Transport Layer Security), но термин «SSL-сертификат» остался в обиходе как дань традиции.</p><p>Без такого сертификата любая передача данных — будь то логины, платежные реквизиты или персональные сообщения — становится уязвимой для атак типа «человек посередине» (MITM). Современные браузеры активно борются с незащищенными соединениями: Chrome и Firefox, например, помечают сайты без HTTPS как «небезопасные», а с 2023 года некоторые из них и вовсе блокируют смешанный контент.</p><p>Интересно, что с 2024 года ряд CA начали внедрять сертификаты с укороченным сроком действия (менее 30 дней) для повышения безопасности. Это усложняет жизнь злоумышленникам, но и требует более гибкой инфраструктуры обновления у владельцев сайтов.</p><p>Проверить наличие сертификата можно, кликнув на значок замка в адресной строке — там будет указана информация о его издателе и уровне проверки. Но важно понимать: сам факт наличия SSL/TLS не делает сайт автоматически безопасным, он лишь обеспечивает шифрование канала передачи данных.</p><h2>Как работает шифрование с SSL/TLS</h2><p>Когда браузер устанавливает соединение с сайтом, защищенным SSL/TLS, происходит не просто обмен данными — запускается сложный криптографический механизм, обеспечивающий конфиденциальность и целостность информации.</p><p>В основе лежат два типа шифрования: асимметричное (для аутентификации и обмена ключами) и симметричное (для быстрой передачи данных).</p><p>Асимметричное шифрование используется на начальном этапе. Сервер обладает парой ключей: открытым (public key), который доступен всем, и закрытым (private key), хранящимся в секрете.</p><p>Когда браузер запрашивает защищенное соединение, сервер отправляет свой SSL-сертификат, содержащий публичный ключ. Браузер проверяет подлинность сертификата через центры сертификации (CA), встроенные в ОС или сам браузер. Если все в порядке, он генерирует временный симметричный ключ, шифрует его публичным ключом сервера и отправляет назад.</p><p>Здесь важно, что расшифровать этот ключ может только владелец закрытого ключа — то есть сам сервер. Так решается проблема безопасного обмена ключами без риска перехвата. Современные системы чаще всего используют алгоритмы вроде RSA (2048 или 4096 бит) или ECC (на основе эллиптических кривых), поскольку они обеспечивают достаточную стойкость при приемлемой скорости работы.</p><p>После обмена начинается фаза симметричного шифрования. Теперь обе стороны используют один и тот же ключ (например, AES-256 или ChaCha20), который применяется для кодирования всего трафика. Симметричные алгоритмы быстрее асимметричных, что критично для производительности — представьте, если бы каждый пакет данных шифровался RSA.</p><p>Процесс установки соединения (TLS handshake) занимает доли секунды, но включает несколько этапов:</p><ol><li>Приветствие клиента (ClientHello) — браузер сообщает серверу, какие алгоритмы шифрования он поддерживает.</li><li>Приветствие сервера (ServerHello) — сервер выбирает наиболее безопасный из доступных вариантов и отправляет свой сертификат.</li><li>Проверка сертификата — браузер убеждается, что сертификат подписан доверенным CA и не просрочен.</li><li>Обмен ключами — как описано выше, создается симметричный ключ.</li><li>Завершение рукопожатия (handshake) — стороны подтверждают готовность к шифрованному обмену.</li></ol><p>Весь процесс обеспечивает три ключевых аспекта безопасности: конфиденциальность (данные недоступны третьим лицам), целостность (информация не изменяется при передаче) и аутентификацию (уверенность в подлинности сайта).</p><p>С 2023 года большинство браузеров перешли на TLS 1.3 (выпущен в 2018), где процесс установки соединения оптимизирован — теперь он требует всего одного обмена данными вместо двух в TLS 1.2. Это не только ускоряет загрузку страниц, но и исключает уязвимости, связанные с устаревшими алгоритмами вроде SHA-1 или CBC-режимов.</p><p>Современные браузеры дополнительно проверяют сертификат на соответствие стандарту HSTS (HTTP Strict Transport Security), который запрещает незащищенные соединения. С 2024 года многие сайты используют механизм «ожидающего сертификата» (Certificate Transparency), позволяющий отслеживать неавторизованные выпуски.</p><p>Важный факт. Даже если злоумышленник перехватит зашифрованный трафик, без закрытого ключа расшифровать его будет практически невозможно. Например, взлом AES-256 методом полного перебора потребует времени, превышающего возраст Вселенной, — при условии, что ключ сгенерирован правильно.</p><p>Однако SSL/TLS — не панацея. Если на сервере неправильно настроены параметры (скажем, разрешен слабый алгоритм RC4), или приватный ключ скомпрометирован, защита рушится. Поэтому важно не только наличие сертификата, но и его корректная настройка. Проверить это можно через инструменты вроде SSL Labs Test — они анализируют параметры соединения и выявляют потенциальные уязвимости.</p><p>В итоге, когда вы вводите платежные данные или логин на сайте, SSL/TLS гарантирует, что информация дойдет до сервера в зашифрованном виде, а подлинность сервера подтверждена центром сертификации. Без этого интернет-платежи, авторизация в банках и даже мессенджеры были бы куда рискованнее..</p><h2>Типы SSL/TLS сертификатов</h2><p>Существует несколько разновидностей SSL/TLS сертификатов, отличающихся уровнем проверки и областью применения. Основное разделение происходит по степени верификации, которую проводит удостоверяющий центр перед выдачей документа.</p><p>Самый простой вариант — сертификаты с проверкой домена (DV). Они подтверждают только право владения доменным именем, без какой-либо информации о владельце. Получить такой сертификат можно автоматически — достаточно подтвердить контроль над доменом через email или DNS-запись. DV-сертификаты подходят для блогов, небольших сайтов и тестовых сред, где не требуется демонстрация юридического статуса организации.</p><figure><img src="https://media.tproger.ru/user-uploads/113565/2025-05-06/b694da51-f38f-476c-92c8-f1b31bb9b9e5.png" alt="" /></figure><p>Для коммерческих проектов чаще используют сертификаты с проверкой организации (OV). В этом случае центр сертификации проверяет официальные регистрационные данные компании — название, юридический адрес, право на использование домена. Процесс занимает 1-3 рабочих дня. В отличие от DV, информация о владельце включается в сертификат и доступна для просмотра в деталях соединения.</p><p>Наивысший уровень доверия обеспечивают сертификаты расширенной проверки (EV). Их особенность — тщательная верификация бизнеса, включающая проверку официальной регистрации, физического адреса и телефонных контактов. В прошлом браузеры выделяли EV-сертификаты зеленой строкой с названием компании, но сейчас визуальное отличие менее заметно. Тем не менее, такой вариант остается стандартом для банков, платежных систем и крупных корпораций.</p><p>По охвату защищаемых доменов сертификаты делятся на несколько категорий:</p><ul><li>Стандартные (Single-name) работают только с одним конкретным доменным именем.</li><li>Wildcard-сертификаты распространяются на основной домен и все его поддомены — удобное решение для сложных веб-приложений.</li><li>Мультидоменные (SAN или MDC) позволяют защитить несколько независимых доменов одним сертификатом — оптимальный выбор для компаний с разветвленной структурой онлайн-ресурсов.</li></ul><p>Отдельно стоит отметить бесплатные сертификаты, которые предлагают такие организации как Let’s Encrypt. Они относятся к категории DV и выдаются на короткий срок (обычно 90 дней), что требует автоматического продления. Хотя по уровню шифрования они не уступают платным аналогам, отсутствие информации о владельце делает их непригодными для коммерческих проектов.</p><p>Выбор конкретного типа зависит от задач проекта. Информационному порталу достаточно DV, интернет-магазину среднего размера — OV, финансовой организации — EV. Главное помнить: сам по себе сертификат не делает сайт безопасным, а лишь обеспечивает защиту передаваемых данных. Дополнительные меры вроде регулярного аудита кода и защиты от DDoS-атак остаются ответственностью владельца ресурса.</p><h2>Почему важно использовать SSL/TLS</h2><p>В современном интернете SSL/TLS сертификаты перестали быть опциональной функцией — они стали обязательным стандартом безопасности. Причин для их использования несколько, и каждая касается как технических аспектов, так и взаимодействия с пользователями:</p><h3>Защита данных</h3><p>Прежде всего, SSL/TLS защищает передаваемые данные от перехвата. Без шифрования злоумышленник, получивший доступ к сетевому трафику (например, через публичную Wi-Fi сеть), может просматривать логины, пароли, банковские реквизиты и другую конфиденциальную информацию.</p><p>Протокол TLS исключает такую возможность, преобразуя данные в криптографически стойкий формат, который невозможно расшифровать без специального ключа. Особенно это актуально для MitM-атак (Man-in-the-Middle), где злоумышленник пытается вклиниться в соединение между клиентом и сервером.</p><h3>Фактор SEO</h3><p>Поисковые системы давно учитывают наличие HTTPS как фактор ранжирования. Google еще в 2014 году объявил, что защищенные соединения получают небольшой, но значимый приоритет в выдаче.</p><p>Сейчас это требование стало еще строже — сайты без SSL/TLS практически не имеют шансов попасть в топ поисковой выдачи. Более того, некоторые функции современных веб-API (например, геолокация или доступ к камере) в браузерах по умолчанию блокируются для незащищенных HTTP-соединений.</p><h3>Обязательные требования</h3><p>Технические стандарты также диктуют свои условия. PCI DSS (требования безопасности для работы с платежными картами) прямо предписывают использование TLS не ниже версии 1.2 для всех операций с финансовыми данными. Аналогичные нормы есть в GDPR и других регуляторных документах — отсутствие шифрования может стать основанием для штрафов и юридических последствий.</p><p>Интересно, что SSL/TLS важен не только для внешних, но и для внутренних сервисов. В 2025 году это стало особенно актуально с ростом числа удаленных сотрудников и облачных сервисов.</p><p>Важно понимать: SSL/TLS — не просто «галочка» для браузера или SEO. Это базовая технология, обеспечивающая конфиденциальность, целостность данных и аутентификацию сервера. При этом современные решения вроде Let’s Encrypt или автоматического продления сертификатов в панелях хостинга свели сложность внедрения к минимуму — сегодня нет рациональных причин отказываться от HTTPS.</p><h2>Как получить и установить сертификат</h2><p>Процесс получения SSL/TLS сертификата начинается с выбора типа защиты, соответствующего потребностям вашего проекта. Для личных блогов и небольших сайтов оптимальным решением станут бесплатные варианты от Let’s Encrypt — они обеспечивают базовое шифрование без сложных процедур верификации.</p><p>Коммерческим проектам потребуются платные сертификаты с проверкой организации (OV) или расширенной проверкой (EV), особенно если работа связана с обработкой платежей или персональных данных.</p><p>Порядок действий при заказе платного сертификата выглядит следующим образом:</p><ol><li>Необходимо сгенерировать запрос на выпуск (CSR) через панель управления хостингом или используя OpenSSL. В запросе указываются данные о домене и организации.</li><li>CSR отправляется в выбранный центр сертификации вместе с документами, подтверждающими право владения доменом и юридический статус компании. Для DV-сертификатов проверка ограничивается подтверждением домена, тогда как EV требует предоставления учредительных документов и может занимать несколько рабочих дней.</li><li>После проверки центр сертификации выдает файлы самого сертификата и цепочки доверия (CA bundle).</li><li>Эти файлы необходимо загрузить на сервер через административную панель хостинга или вручную, прописав соответствующие директивы в конфигурации веб-сервера. Для Nginx потребуется указать пути к файлам сертификата и приватному ключу в блоке server, а в Apache — использовать директивы SSLCertificateFile и SSLCertificateKeyFile.</li></ol><p>Особое внимание стоит уделить автоматическому продлению. Большинство современных центров сертификации, включая Let’s Encrypt, выдают сертификаты на ограниченный срок (обычно 90 дней). Для автоматического обновления можно использовать Certbot или встроенные инструменты панелей управления типа cPanel. Они самостоятельно проверяют срок действия и обновляют сертификаты без вмешательства администратора.</p><p>Для российских проектов в 2025 году появились дополнительные возможности — некоторые отечественные хостинг-провайдеры интегрировали услугу получения сертификатов прямо из панели управления. Это упрощает процесс, хотя выбор типов сертификатов пока ограничен базовыми вариантами. Альтернативой может стать использование решений от облачных провайдеров, которые предлагают собственные центры сертификации с поддержкой российских криптографических алгоритмов.</p><p>После установки обязательно проверьте корректность работы через онлайн-инструменты вроде SSL Labs Test. Они покажут не только правильность цепочки доверия, но и выявят потенциальные уязвимости в настройках. Особенно важно проверить поддержку актуальных версий TLS (1.2 и выше) и отключить устаревшие алгоритмы шифрования, которые могут снижать уровень безопасности.</p><h2>Как проверить корректность SSL/TLS</h2><p>После установки сертификата важно убедиться в его правильной работе. Самый простой способ — обратить внимание на адресную строку браузера. Закрытый замок и пометка «Безопасное соединение» свидетельствуют о корректной настройке. Однако для профессиональной проверки потребуются специальные инструменты.</p><p>Онлайн-сервисы вроде SSL Labs предоставляют детальный анализ конфигурации. Достаточно ввести адрес сайта, и система проверит не только срок действия сертификата, но и поддерживаемые версии протоколов, алгоритмы шифрования, правильность цепочки доверия. Результат отображается в виде оценки от A+ до F, где низкие баллы указывают на критические уязвимости.</p><p>Частая проблема — несоответствие имени в сертификате и фактического домена (mismatch). Это происходит при использовании одного сертификата для нескольких ресурсов или ошибках в настройках. Браузеры жестко реагируют на такой сценарий, блокируя доступ или выводя предупреждения. Проверить соответствие можно через консоль разработчика во вкладке «Безопасность».</p><p>Срок действия — еще один важный параметр. Просроченные сертификаты (expired) вызывают предупреждения в браузерах и могут полностью заблокировать доступ к сайту. Современные системы мониторинга, такие как Uptime Robot, позволяют настроить уведомления об истечении срока заранее.</p><p>Самоподписанные сертификаты (self-signed) — особая категория. Они не проверяются центрами сертификации, поэтому браузеры не доверяют таким соединениям. Проверить подпись можно через командную строку с помощью openssl x509 -text -noout -in сертификат.crt.</p><p>Для комплексной проверки стоит обратить внимание на несколько аспектов:</p><ol><li>Корректность цепочки сертификатов — промежуточные звенья должны быть правильно установлены на сервере.</li><li>Поддержку актуальных версий TLS (1.2 и выше) при отключении устаревших протоколов вроде SSLv3.</li><li>Настройку перенаправления с HTTP на HTTPS без смешанного содержимого.</li></ol><h2>Мифы и заблуждения о сертификатах</h2><p>Вокруг SSL/TLS сертификатов сложилось немало ошибочных представлений, которые часто мешают принимать верные решения при организации защиты сайта. Разберем самые распространенные из них.</p><h3>Сертификаты дают 100% защиты</h3><p>Один из самых живучих мифов — убеждение, что наличие сертификата делает ресурс полностью защищенным. На самом деле, SSL/TLS обеспечивает лишь безопасность передачи данных между клиентом и сервером.</p><p>Это не панацея от SQL-инъекций, XSS-атак или других уязвимостей веб-приложений. Сертификат не заменяет необходимость регулярного аудита кода, обновления ПО и других мер безопасности.</p><h3>Сертификаты снижают производительность</h3><p>Распространено заблуждение о сильном влиянии шифрования на производительность. Современные протоколы, особенно TLS 1.3, оптимизированы настолько, что разница в скорости между защищенным и незащищенным соединением практически незаметна.</p><p>Более того, HTTP/2 и HTTP/3, требующие обязательного использования TLS, часто работают быстрее незашифрованных соединений за счет более эффективных механизмов передачи данных.</p><h3>Платные сертификаты лучше</h3><p>Некоторые уверены, что бесплатные сертификаты менее надежны, чем платные. На самом деле, решения вроде Let’s Encrypt используют те же криптографические алгоритмы, что и коммерческие альтернативы. Разница лишь в уровне проверки владельца и сроке действия — технически уровень шифрования идентичен.</p><h3>Сертификаты обеспечивают долговременную защиту</h3><p>Отдельно стоит миф о «вечной» защите после установки. Сертификаты имеют ограниченный срок действия не просто так — это важный элемент безопасности. Кроме того, криптографические стандарты постоянно развиваются: алгоритмы, считавшиеся надежными пять лет назад, сегодня могут быть уязвимы. Регулярное обновление сертификатов и параметров шифрования обязательно для поддержания реальной защиты.</p><h3>Сертификаты нужны не всем</h3><p>Еще одно ошибочное мнение — что SSL/TLS нужен только сайтам с формами ввода. Современные браузеры помечают все HTTP-страницы как небезопасные, независимо от их содержания. Более того, многие функции (геолокация, push-уведомления) в Chrome и других браузерах заблокированы для незащищенных соединений.</p><h3>Это сложно</h3><p>Наконец, существует миф о сложности установки и обслуживания. Современные хостинг-провайдеры и панели управления предлагают автоматизированные решения, где получение и обновление сертификата занимает несколько кликов. Даже ручная настройка через Let’s Encrypt и Certbot перестала быть сложной задачей благодаря подробной документации.</p><p>Разобравшись с этими заблуждениями, проще принимать взвешенные решения о защите сайтов. SSL/TLS — важный, но не единственный элемент безопасности, который нужно рассматривать в комплексе с другими мерами защиты данных.</p><h2>Частые проблемы и уязвимости</h2><p>Даже правильно настроенные SSL/TLS сертификаты могут стать источником проблем, если не учитывать ключевые аспекты их работы. Одна из самых распространенных ситуаций — истекший срок действия.</p><p>В отличие от обычных документов, просроченный сертификат не просто перестает работать, а вызывает активные предупреждения в браузерах, блокируя доступ к сайту. Современные центры сертификации сократили сроки действия до трех месяцев, что требует настройки автоматического обновления через инструменты вроде Certbot или встроенные механизмы хостинг-панелей.</p><p>Неправильная конфигурация сервера — другая частая причина сбоев. Типичные ошибки включают неполную цепочку доверия (когда отсутствуют промежуточные сертификаты), несоответствие имени в сертификате и фактического домена, а также использование самоподписанных решений для публичных сайтов. Такие проблемы легко выявить через сервисы проверки вроде SSL Labs, но они регулярно встречаются даже на крупных ресурсах.</p><p>Устаревшие протоколы и алгоритмы представляют отдельную угрозу. Поддержка TLS 1.0 и 1.1, сохраняемая для совместимости со старыми системами, создает бреши в безопасности. Эти версии содержат известные уязвимости (BEAST, POODLE), позволяющие злоумышленникам частично расшифровывать трафик. Современные стандарты требуют отключения этих протоколов и использования TLS 1.2 или 1.3 с устойчивыми алгоритмами вроде AES-GCM и ChaCha20-Poly1305.</p><p>Особая категория проблем связана с доверенными центрами сертификации. Система предполагает, что все браузеры и операционные системы доверяют определенному набору корневых сертификатов. Однако известны случаи, когда центры сертификации выдавали документы мошенникам или становились жертвами взлома. Например, <a href="https://xakep.ru/2011/09/21/56896/">инцидент с DigiNotar в 2011</a> году привел к компрометации сотен сертификатов, включая ресурсы спецслужб.</p><p>Технические уязвимости в реализации протоколов тоже заслуживают внимания. <a href="https://www.kaspersky.ru/blog/heartbleed-openssl-bug/14873/">Атака Heartbleed</a> (2014), пользуясь ошибкой в OpenSSL, позволяла читать память сервера, включая приватные ключи. Уязвимости в криптографических библиотеках (ROBOT, DROWN) демонстрируют, что даже правильно настроенное шифрование может оказаться под угрозой из-за фундаментальных проблем в коде.</p><p>Отдельно стоит отметить проблемы смешанного содержимого, когда защищенная HTTPS-страница загружает ресурсы (скрипты, изображения) по незашифрованному HTTP. Браузеры считают такие страницы уязвимыми и могут блокировать их элементы или показывать предупреждения, несмотря на наличие действующего сертификата.</p><p>Важно не только правильно настраивать сертификаты, но и регулярно проверять их состояние, отслеживать отзыв списков (CRL) и обновлять конфигурацию сервера в соответствии с актуальными рекомендациями. Инструменты мониторинга вроде SSL Pulse помогают отслеживать общую ситуацию с безопасностью в интернете и вовремя реагировать на новые угрозы.</p><p>Безопасность безопасностью, но как писать код, который не стыдно показывать? Всё для фронтендеров и бэкендеров в одном <a href="https://t.me/+c6lPaQBXLvE4YmMy">месте</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Цель — ваша компания: как защитить данные от кибератак</title>
      <link>https://tproger.ru/articles/cel---vawa-kompaniya--kak-zashhitit-dannye-ot-kiberatak</link>
      <comments>https://tproger.ru/articles/cel---vawa-kompaniya--kak-zashhitit-dannye-ot-kiberatak?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анна Ельцова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/cel---vawa-kompaniya--kak-zashhitit-dannye-ot-kiberatak</guid>
      <description><![CDATA[<p>Алексей Власов, партнер и коммерческий директор ИТ-интегратора Notamedia, рассказывает, с какими киберугрозами сталкиваются B2B- и B2G-сектора и как организациям защитить свои данные.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/cel---vawa-kompaniya--kak-zashhitit-dannye-ot-kiberatak">Цель — ваша компания: как защитить данные от кибератак</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Базы данных]]></category>
      <category><![CDATA[Персональные данные]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Кибербезопасность]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 29 May 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Только за первый квартал 2025 года крупные отечественные компании <a href="https://www.cnews.ru/news/top/2025-05-14_v_rossii_vyroslo_kolichestvo">подверглись</a> более чем 270 млн кибератакам. В зоне риска — маркетплейсы, базы авиакомпаний и транспортных организаций. В случае успешной атаки бизнесу грозят штрафы до 15 млн рублей. Злоумышленники используют сложные схемы: от вымогателей до APT-группировок и supply chain-атак. Алексей Власов, партнер и коммерческий директор ИТ-интегратора Notamedia, рассказывает подробнее об актуальных киберугрозах и как от них защититься.</p><h2>ЦЕЛЕНАПРАВЛЕННЫЕ АТАКИ (APT-ГРУППЫ)</h2><p>APT-атака (Advanced Persistent Threat — продолжительная атака повышенной сложности) — это длительная, целенаправленная и скрытая кибератака, при которой злоумышленники получают доступ к информационным системам и остаются незамеченными, чтобы собрать конфиденциальные данные или нанести другой ущерб.</p><p>APT-атаки используются против ключевых секторов: промышленность, финансы, энергетика и госсектор. В 2024–2025 особенно активными стали китайские, северокорейские и неизвестные группировки. Целенаправленные атаки — особая категория угроз, исключительно против конкретной организации или государственного учреждения.</p><p>Цель злоумышленников —  получить разные конфиденциальные сведения: коммерческую тайну, персональные данные пользователей, материалы под грифом «секретно», данные о стеке ИТ-решений или оборудовании, стратегические документы. Нередко объектом атаки становятся системы жизнеобеспечения компаний, веб-сайты организаций или отдельные элементы ИТ-инфраструктуры.</p><h3>Как это работает</h3><p>Проникнув внутрь защищенного периметра предприятия, преступники активно исследуют само устройство, через которое удалось организовать доступ, и определяют степень уязвимости используемых в компании технологий и сервисов. Важнейшую роль играет сбор внутренних данных, находящихся на компьютерах сотрудников: файлы конфигурации, личные профили, базы данных, хранящиеся локально. Подобная информация позволяет злоумышленникам глубже понимать структуру организации и планировать дальнейшие шаги атаки.</p><h3>Как распознать и защититься</h3><h4>Фишинговые электронные письма</h4><p>Чтобы получить несанкционированный доступ к корпоративным сетям, киберпреступники часто прибегают к использованию целевого фишинга. Они проводят небольшое «расследование» и получают все нужные данные, чтобы придумать привлекательные для сотрудников заголовки писем.  В таких посланиях могут быть вредоносные вложения или ссылки с программами-шпионами, которые позволяют  злоумышленникам контролировать систему. Лучшая защита от них — повысить осведомленность сотрудников и регулярно обучать их кибербезопасности, так как подходы атак постоянно меняются.</p><h4>Скомпрометированные учетные записи</h4><p>Постоянно контролируя статистику посещаемости внутренней сети, можно заметить отклонения от привычного подключения к ней сотрудников. Например, попытки входа вне рабочего графика или повышенная активность требуют особого внимания. Особенно критично отслеживать подобные действия, если они совершаются от имени представителей топ-менеджмента, у которых есть привилегированный уровень доступа к данным. Обращайте внимание на локацию, из которой совершается подключение, и время посещения ресурса. Особо уязвимые периоды для подобных проникновений — ночь, выходные или праздничные дни, когда офис пуст и вероятность обнаружить постороннее присутствие крайне мала.</p><p>Чтобы не допустить целенаправленные атаки, нужно сегментировать сеть (разделять инфраструктуру на изолированные зоны с различными уровнями доверия, доступ между которыми строго контролируется, чтобы ограничить движение трафика) и контролировать привилегии доступа, а также внедрять Zero Trust политику.</p><h4>Перемещение данных</h4><p>Цель злоумышленников — похитить критически важную для бизнеса или госсектора информацию. Поэтому любые массовые передачи значительных объемов данных, перемещение документов между серверами или изменение места хранения файла заслуживают пристального внимания. Необходимо следить за внутренними потоками данных, а также подключением внешних устройств и активностью отправки данных за пределы защищенного корпоративного периметра. Регулярно отслеживайте соединения с внешними ресурсами, обращайте особое внимание на нестандартные подключения.</p><h2>ШИФРОВАЛЬЩИКИ / ВЫМОГАТЕЛИ (RANSOMWARE)</h2><p>Подобные программы продолжают вызывать сбои работы предприятий, особенно в секторах ритейла и промышленности. В прошлом году число атак с помощью шифровальщиков увеличилось на <a href="https://www.rbc.ru/technology_and_media/16/12/2024/675ed7419a79475fb7eb1cb3">44%</a>.</p><p>Примечательно, что в каждом десятом таком инциденте злоумышленников интересовала не кража данных с целью получения выкупа, а намеренное нанесение максимального вреда выбранному для атаки объекту.</p><p>Цели — шантаж и нарушение работы сервисов. С помощью вирусов-вымогателей киберпреступники ежегодно зарабатывают порядка 2 миллиардов долларов. В большинстве случаев злоумышленники, используя вирусы-шифровальщики, блокируют доступ к важным данным на устройстве, вынуждая платить за восстановление. Обычно такие программы запрещают владельцам пользоваться собственными файлами и информацией до момента уплаты требуемого выкупа. Однако обещанный возврат доступа не гарантируется — зачастую злоумышленники нарушают данное слово.</p><p>Наряду с прямыми денежными убытками, жертвы сталкиваются с серьезными последствиями в виде сбоев в работе ИТ-инфраструктуры, падения продуктивности и сильного психологического напряжения. Дополнительно киберпреступники нередко шантажируют потерпевших раскрытием приватных данных или продажей ценной информации третьим лицам.</p><h3>Как это работает</h3><p>Излюбленный метод злоумышленников — социальная инженерия: один из работников компании, не распознав угрозу, переходит по специально подготовленной фальшивой ссылке и автоматически устанавливает вредоносное ПО, обеспечивая нелегальный доступ к чувствительным данным компании.</p><h3>Как распознать и защититься:</h3><ul><li>Один из первых признаков заражения вирусом-вымогателем — потеря доступа к файлам, базам и документам. Пользователь замечает, что некоторые из них неожиданно перестали открываться или требуют ввода пароля несмотря на отсутствие настроек парольной защиты.</li><li>Другой яркий признак — появление незнакомых расширений у инфицированных файлов, например, “.locked” или “.encrypted”. При этом обычные программы перестают распознавать и открывать такие объекты.</li><li>Кроме того, в затронутых папках начинают появляться специальные инструкции, подробно объясняющие процедуру восстановления данных и требования к выплате компенсации за разблокировку.</li><li>Рабочий стол компьютера также может подвергнуться изменениям: стандартная картинка заменяется сообщением с предупреждением о шифровании данных и требованиями о предоставлении выкупа.</li><li>Наконец, антивирусные решения и прочие инструменты информационной безопасности могут подавать тревожные сигналы о наличии подозрительных процессов и действий в операционной системе.</li></ul><p>Во всех перечисленных случаях не рекомендую идти на поводу у злоумышленников и спешить уплачивать требуемую сумму. Сначала проверьте в открытом доступе, нет ли декриптора, который помог бы вам расшифровать файлы. Есть как платные, так и бесплатные программы, однако не все они могут расшифровать изощренные пароли вредителей. Лучше вложить средства в превентивные меры защиты от действий RANSOMWARE. Например:</p><ul><li>Регулярно создавать архивные копии критически важных файлов. Наличие дубликатов ваших данных на дополнительном жестком диске или в облаке позволит восстановить информацию после устранения угрозы шифровальщика.</li><li>С осторожностью открывать вложения в письмах от неизвестных отправителей, избегать переходов на ненадежные сайты и загрузок программного обеспечения с посторонних источников. Нужно доверять только официальным магазинам приложений и страницам производителей.</li><li>Использовать качественное антивирусное ПО для дополнительной защиты устройства или EDR-системы.</li><li>Обновлять ПО и операционные системы на постоянной основе.</li><li>Обучать персонал основам информационной безопасности.</li></ul><h2>АТАКИ НА ЦЕПОЧКУ ПОСТАВОК (SUPPLY CHAIN ATTACKS)</h2><p>Прогнозируется, что к 2031 году убытки компаний от атак на  цепочки поставок программного обеспечения <a href="https://go.cyberproof.com/hubfs/CyberProof_2025_Global_Threat_Intelligence_Report.pdf">увеличатся</a> до колоссальных 138 миллиардов долларов ежегодно, превысив показатели предыдущих лет: 60 миллиардов долларов в 2025-м и 46 миллиардов долларов в 2023 году, учитывая постоянный годовой прирост на 15%.</p><p>Supply chain attack — относительно новый тип угроз, который нацелен на разработчиков ПО и поставщиков услуг или технологий. Они вошли в перечень наиболее распространенных угроз только в прошлом году из-за увеличившегося в три раза числа инцидентов по сравнению с 2023 годом.</p><p>Злоумышленники используют эти атаки, чтобы получить доступ к исходному коду, процессам разработки или механизмам обновления и распространить вредоносное ПО, заразив установленные программы.</p><p><b>Цели: </b></p><ul><li>Дестабилизация деятельности компании — утечка конфиденциальных данных способна нанести удар по репутации и финансам, создать юридические риски.</li><li>Общественная реакция — распространение фейков или компромата через соцсети формирует негативный фон вокруг компании и подрывает доверие клиентов.</li><li>Информационное давление на сотрудников — персонал компании подвергается угрозам раскрытия личной информации или шантажу, вынуждая руководство идти на уступки ради сохранения репутации.</li><li>Шифрование данных и вымогательство — установка вредоносных программ-шифровальщиков приводит к блокировке критичных информационных активов, лишая предприятие возможности полноценно функционировать вплоть до выплаты крупного выкупа.</li></ul><h3>Как это работает</h3><p>При осуществлении атаки на поставщиков ПО злоумышленники выбирают путь наименьшего сопротивления, проникая в защищенную сеть через слабое звено — небольшую фирму-подрядчика или разработчика программного обеспечения. Подобные нападения осуществляются двумя основными способами:</p><ol><li>Компрометация службы или продукта: нападение на мелких поставщиков или партнеров, обладающих низким уровнем киберзащиты, позволяющим злоумышленнику незаметно внедряться в инфраструктуру основной фирмы. Типичный пример — компрометация ПО компании на аутсорсе, работающей с более крупным бизнесом (который и становится конечной целью атаки).</li><li>Внедрение вредоносного кода непосредственно в само ПО, распространяемое среди множества конечных потребителей. Пользователи, устанавливающие обновление, сами открывают дверь в свою ИТ-инфраструктуру для дальнейших проблем.</li></ol><h3>Как распознать и защититься</h3><p>Опознать supply chain-атаку можно, если внимательно следить за сетевой активностью — она может показать необычные подключения или передачу больших объёмов данных. Также важно постоянно мониторить действия пользователей и систем — подозрительное поведение, редкие попытки доступа или запуск необычных процессов могут быть сигналом. Ещё один способ — отслеживать изменения в файлах, чтобы заметить несанкционированные вмешательства.</p><p>Вот несколько превентивных мер, чтобы защититься от supply chain attack:</p><ul><li>Регулярно проверяйте и контролируйте контрагентов, проводите обязательную верификацию.</li><li>Используйте SBOM (Software Bill of Materials — перечень всех модулей и библиотек, необходимых для сборки программного продукта, а также указания их связи друг с другом). Он помогает команде видеть, где могут скрываться уязвимости — и заранее обновлять или заменять слабые места до того, как они станут проблемой.</li><li>Реализовывайте политику обновлений с инспекцией. Например, отключите автоматическое обновление системы и программного обеспечения, с осторожностью устанавливайте апдейты вручную и тщательно тестируйте их работу перед использованием.</li><li>Сегментируйте бизнес-процессы: так вы минимизируете возможные последствия кибератак: если одна зона подвергнется воздействию, остальные останутся надежно изолированными и сохранят свою безопасность. Сегментация помогает навести порядок в доступах: каждый видит только то, что нужно для работы — это снижает риск утечек и ошибок.</li></ul><p>Сегодня компании и организации в РФ сталкиваются не с одной, а со множеством киберугроз, которые становятся только изощреннее. Но просто реагировать на инциденты недостаточно: нужно мониторить, работать на опережение и минимизировать риски.  Поэтому подход к кибербезопасности должен быть стратегическим, техническим и операционным одновременно. Кольцевая защита, Zero Trust, повышение осведомленности персонала и контроль подрядчиков — то, без чего не обойтись.</p>]]></content:encoded>
    </item>
    <item>
      <title>От идеи к успеху: как создать популярное мобильное приложение</title>
      <link>https://tproger.ru/articles/ot-idei-k-uspehu--kak-sozdat-populyarnoe-mobilnoe-prilozhenie</link>
      <comments>https://tproger.ru/articles/ot-idei-k-uspehu--kak-sozdat-populyarnoe-mobilnoe-prilozhenie?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анна Ельцова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/ot-idei-k-uspehu--kak-sozdat-populyarnoe-mobilnoe-prilozhenie</guid>
      <description><![CDATA[<p>Кирилл Васильев, руководитель кластера кросс-функциональных команд в RuStore, рассказывает, как создать популярное приложение.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/ot-idei-k-uspehu--kak-sozdat-populyarnoe-mobilnoe-prilozhenie">От идеи к успеху: как создать популярное мобильное приложение</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Оптимизация]]></category>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Мобильная разработка]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Apple]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[IDE]]></category>
      <category><![CDATA[Социальные сети]]></category>
      <category><![CDATA[iOS]]></category>
      <category><![CDATA[Swift]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Сервисы]]></category>
      <category><![CDATA[Kotlin]]></category>
      <category><![CDATA[React]]></category>
      <category><![CDATA[Маркетинг]]></category>
      <category><![CDATA[Аналитика]]></category>
      <category><![CDATA[App Store]]></category>
      <category><![CDATA[Игра]]></category>
      <category><![CDATA[Приложение]]></category>
      <category><![CDATA[Google Analytics]]></category>
      <category><![CDATA[Xcode]]></category>
      <category><![CDATA[Дизайн]]></category>
      <category><![CDATA[Flutter]]></category>
      <category><![CDATA[Dart]]></category>
      <category><![CDATA[Figma]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Firebase]]></category>
      <category><![CDATA[CI/CD]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 18 Apr 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Создание и продвижение мобильного приложения — это путь, который требует грамотного подхода на каждом этапе. Как разработать идею, выбрать функционал и сделать продукт удобным? Какие инструменты продвижения эффективны в цифровом мире? В этой статье Кирилл Васильев, руководитель кластера кросс-функциональных команд в RuStore, разобрал весь процесс: от идеи до привлечения тысяч пользователей.</p><h2>Определяем цель</h2><p>Успех приложения начинается с четкого понимания, зачем оно нужно — так становится проще определить целевую аудиторию. Это влияет не только на функционал, но и на дизайн, способы продвижения и даже тон общения с пользователями.</p><p>Некоторые программы помогают развивать существующий бизнес — как это делают банковские сервисы, которые упрощают работу с клиентами. Другие становятся самостоятельными продуктами, например, для обучения, занятий спортом или развлечений.</p><p>Кроме того, приложение должно решать реальные проблемы пользователей. Допустим, вы задумали создать программу для фрилансеров. Решили провести исследование, и оно показало, что фрилансеры часто страдают от прокрастинации и ненавидят заниматься выставлением счетов клиентам. Ваша идея и главная фишка — приложение, которое автоматизирует процесс оплаты, контролирует сроки выполнения проектов и помогает планировать рабочее время.</p><p>Чтобы убедиться, что идея действительно рабочая, проведите опросы в Telegram-каналах фрилансеров или создайте анкету. Вы можете спросить, какие функции для них наиболее актуальны: автоматический расчет налогов, интеграция с платежными системами или отслеживание времени работы. Это поможет сфокусироваться на действительно важных фичах и отсеять второстепенные.</p><h2>Выбираем платформу и инструменты</h2><p>Сегодня на российском рынке <a href="https://lenta.ru/articles/2025/03/12/luchshie-smartfony-na-android/">доминируют</a> две мобильные операционные системы: Android (около 70% пользователей) и iOS (около 30%). Оптимальным решением будет разработка приложения для обеих платформ, особенно если вы ориентируетесь на крупные города, где доля пользователей iOS существенно выше.</p><p>Приложения под Android большинство разработчиков пишет на Kotlin, хотя Java до сих пор остается одним из вариантов из-за обширной базы готовых решений и библиотек. Основной средой выступает Android Studio — в ней есть весь необходимый инструментарий для создания, отладки и тестирования приложений. Современные разработчики активно используют Jetpack Compose для построения пользовательского интерфейса, Room для работы с базами данных, Retrofit для сетевых запросов и Dagger или Hilt для внедрения зависимостей.</p><p>В мире iOS основным языком программирования стал Swift — современный и безопасный инструмент для нативных приложений. Разработка ведется в среде Xcode, официальной IDE от Apple. Для построения интерфейсов все чаще используется SwiftUI, для управления данными — Core Data, а для сетевого взаимодействия — фреймворк Alamofire. Работа с асинхронными событиями упрощается с помощью фреймворка Combine.</p><p>При ограниченных ресурсах можно рассмотреть кросс-платформенную разработку. Так, Flutter использует язык программирования Dart и позволяет создавать производительные приложения с нативным внешним видом. React Native дает возможность применять веб-технологии для мобильной разработки, а Xamarin ориентирован на разработчиков, привыкших к экосистеме Microsoft и языку C#.</p><p>Выбор платформы и инструментов должен основываться на характеристиках вашей ЦА, требованиях к функционалу и имеющихся ресурсах. Учитывайте также, что для разных магазинов приложений (RuStore, App Store, Google Play) могут потребоваться специфические оптимизации и настройки.</p><h2>Продумываем функционал</h2><p>При разработке функционала важно следовать концепции MVP (Minimum Viable Product) — минимально жизнеспособного продукта. Это позволит быстрее выйти на рынок, получить обратную связь и итеративно улучшить приложение.</p><p>Возьмем для примера приложение доставки еды. В этом случае MVP должен включать:</p><ul><li>авторизацию пользователя через телефон, email или социальные сети;</li><li>каталог ресторанов с фильтрацией по кухне, рейтингу и времени доставки; меню каждого заведения с фотографиями и описанием блюд;</li><li>корзину с возможностью изменения состава заказа;</li><li>оформление заказа с выбором адреса доставки и способа оплаты;</li><li>отслеживание статуса заказа в реальном времени;</li><li>профиль пользователя с историей заказов.</li></ul><p>Важно уделить внимание и техническим аспектам функционала:</p><ul><li>Локальное кэширование данных. Поддерживает работу приложения при слабом интернет-соединении или его отсутствии. Сохраняет каталоги, популярные позиции и историю действий пользователя.</li><li>Офлайн-режим. Определяет набор функций, доступных без подключения к сети. Критически важен для удержания пользователей в зонах с плохим интернетом.</li><li>Система пуш-уведомлений. Информирует пользователей о важных событиях, статусах заказов и специальных предложениях. Повышает вовлеченность и возвращаемость в приложение.</li><li>Многопоточная обработка. Выполняет ресурсоемкие операции в фоновом режиме. Гарантирует отзывчивость интерфейса даже при выполнении сложных задач.</li><li>Оптимизация изображений. Внедряет алгоритмы сжатия для быстрой загрузки визуального контента. Обеспечивает комфортное использование даже при ограниченной скорости соединения.</li></ul><p>При этом разработчики часто допускают ошибки, и одна из самых распространенных — функциональная перегруженность. Не стоит добавлять AR-анимации, игровые механики и другие «модные» функции, если они не решают реальных проблем клиентов.</p><p>Также многие игнорируют обратную связь пользователей, хотя механизмы ее сбора стоит включать уже в MVP. Недостаточное внимание к безопасности может стать критичным для приложений с личными данными и платежами. А отсутствие встроенных инструментов аналитики затрудняет понимание того, как пользователи взаимодействуют с программой.</p><p>Выбор правильной архитектуры — это фундамент, который определяет надежность, масштабируемость и удобство поддержки. Вот основные паттерны для мобильных приложений:</p><ul><li>MVVM — рекомендуемый Google подход с разделением UI и бизнес-логики</li><li>MVI — однонаправленный поток данных, хорошо сочетается с реактивным программированием</li><li>MVP — классическая архитектура. Популярна благодаря простоте реализации</li><li>Clean Architecture — многослойный подход с упором на тестируемость и гибкость</li><li>VIPER (iOS) — расширенный MVC со строгим разделением ответственности</li></ul><p>Важное значение имеет также выбор технологий для хранения и передачи данных. Для локальной работы подойдут SQLite + Room, Realm или DataStore; для сетевого взаимодействия на Android чаще всего используют Retrofit + OkHttp, а в реактивных сценариях — Ktor Client.</p><p>Правильный выбор архитектуры напрямую зависит от масштаба проекта и размера команды. Небольшие приложения могут обойтись простыми решениями, тогда как сложные продукты требуют комплексного подхода с продуманным разделением ответственности.</p><h2>Создаем удобный интерфейс</h2><p>Интерфейс — это лицо приложения. Даже если у вас отличный функционал, но пользоваться им неудобно, людям будет проще удалить программу и найти что-то другое.</p><p>Эффективный UI/UX строится на пяти ключевых принципах:</p><ol><li>Очевидность (интуитивное понимание интерфейса);</li><li>Экономия внимания (минимум шагов для достижения цели);</li><li>Консистентность (единообразие элементов с одинаковой функциональностью);</li><li>Обратная связь (видимый результат каждого действия);</li><li>Прощение ошибок (возможность отмены операций).</li></ol><p>Современные инструменты значительно ускоряют создание качественных интерфейсов. Дизайнеры используют Figma, Adobe XD и Sketch для прототипирования. Android-разработчики предпочитают Jetpack Compose и Material Design Components. Для iOS актуальны SwiftUI, UIKit и Human Interface Guidelines от Apple.</p><p>Наглядный пример различий между хорошим и плохим интерфейсом — приложения для доставки еды. В удачном решении ключевые элементы находятся в зоне комфортного доступа, процесс заказа разбит на логические шаги с индикацией прогресса, а дизайн адаптируется к условиям использования. В неудачном — мелкие тесно расположенные кнопки, длинные формы без разбивки на шаги и непонятная навигация.</p><h2>Проводим тестирование</h2><p>Юзабилити-тесты с фокус-группами, A/B-тестирование элементов и аналитика пользовательского поведения дают объективную картину взаимодействия клиентов с приложением.</p><p>Комплексное тестирование включает два основных направления:</p><ol><li>Автоматизированное тестирование: unit-тесты (JUnit, XCTest) для проверки отдельных компонентов; интеграционные тесты для проверки взаимодействия между модулями; UI-тесты (Espresso, XCUITest) для проверки интерфейса; end-to-end тесты для имитации полного пользовательского сценария.</li><li>Ручное тестирование: функциональное (соответствие требованиям), тестирование производительности (работа под нагрузкой), юзабилити (оценка удобства), кросс-платформенное тестирование (проверка на разных устройствах) и тестирование подключений (поведение при различном качестве интернет-соединения).</li></ol><p>Для этого используют специализированные инструменты: Firebase Test Lab для запуска тестов на множестве устройств, Crashlytics для мониторинга сбоев, Android Profiler и Xcode Instruments для анализа производительности. А Accessibility Scanner помогает адаптировать интерфейс для людей с ограниченными возможностями, расширяя потенциальную аудиторию.</p><h2>Публикуем приложение</h2><p>После тестирования и исправления проблем наступает ответственный момент публикации. Каждый магазин приложений имеет свои особенности процесса:</p><ul><li>Google Play: создание аккаунта разработчика ($25 единоразово); подготовка материалов (иконка, скриншоты, видео, описание); загрузка APK/App Bundle; заполнение формы оценки контента; настройка дистрибуции и ценообразования; ожидание проверки (до 2 дней).</li><li>App Store: регистрация в Apple Developer Program ($99/год); создание записи в App Store Connect; подготовка маркетинговых материалов; загрузка сборки из Xcode; заполнение информации о возрастных ограничениях; ожидание рассмотрения (1-7 дней).</li><li>RuStore: бесплатное создание аккаунта; подготовка материалов; загрузка APK; заполнение метаданных; быстрая модерация (до часа).</li></ul><p>Перед публикацией важно убедиться в соответствии приложения правилам магазина, подготовить политику конфиденциальности и настроить аналитику для мониторинга производительности с первого дня.</p><h2>Поддерживаем и обновляем</h2><p>После выпуска начинается непрерывный процесс поддержки и совершенствования продукта. Разработчики регулярно исправляют найденные ошибки, добавляют новые функции и улучшают работу уже существующих.</p><p>Для эффективного мониторинга используют комплексные аналитические инструменты: Firebase Crashlytics для отслеживания сбоев, Firebase Analytics/Google Analytics для анализа пользовательского поведения, RuStore Remote Config — бесплатный аналог  Firebase, Mixpanel для углубленного анализа пользовательских путей, AppMetrica от Яндекса как комплексное решение для российского рынка.</p><p>Автоматизация процессов разработки критически важна для регулярных релизов. CI/CD-системы (GitHub Actions, GitLab CI, Bitrise, Fastlane) позволяют автоматизировать сборку, тестирование и публикацию обновлений, значительно сокращая время выхода новых версий.</p><p>Оптимальная стратегия обновлений включает регулярный график релизов (каждые 2-4 недели) с четким приоритетом задач: критические исправления, новые функции, оптимизация производительности. В тренде современной разработки: персонализация на основе ИИ, многофункциональные суперапп-решения, адаптация под новые форм-факторы устройств и повышенное внимание к приватности данных.</p><h2>Продвигаем приложение</h2><p>На рынке огромная конкуренция, и без активного продвижения ваш продукт просто затеряется среди тысяч других программ. Важную роль здесь играет ASO (App Store Optimization) — оптимизация для магазина приложений. В некоторых случаях был <a href="https://www.businessofapps.com/marketplace/app-store-optimization/research/app-store-optimization-strategies/">зафиксирован</a> рост установок до 70% благодаря сильным ASO-стратегиям.</p><p>Для Android-приложений это означает настройку страницы так, чтобы пользователи легко находили ваш продукт. Здесь важно правильно подобрать ключевые слова для описания, создать привлекательную иконку и подготовить качественные скриншоты. Чтобы понять, какое оформление работает лучше, разработчики всё чаще используют A/B-тесты — такая возможность есть, например, в RuStore. Она позволяет сравнить разные версии карточки приложения и выбрать ту, которая эффективнее привлекает пользователей.</p><p>Также разработчики могут использовать как бесплатные, так и платные форматы продвижения. Один из бесплатных форматов — фичеринг, когда редакция размещает приложение в подборках, разделах или на главной странице магазина. Платное же продвижение позволяет настраивать таргетинг по демографии, географии, интересам, ключевым фразам и устройствам, а также запускать кампании прямо в поисковой выдаче магазина.</p><p>Еще один инструмент для продвижения приложений — социальные сети. Здесь можно показывать функционал программы, общаться с пользователями, отвечать на их вопросы и рассказывать о новых опциях. Это помогает создать активное сообщество вокруг продукта. Так, к примеру, В 2023 году компания Geozilla, разработчик приложения для отслеживания местоположения близких, провела кампанию по продвижению с инфлюенсерами в социальных сетях. В рамках сотрудничества удалось собрать более 1 миллиона просмотров, а коэффициент конверсии из кликов в установки приложения составил 24%.</p><p>Партнерские программы и рекламные кампании тоже сильно влияют на привлечение новых пользователей. Нельзя забывать и о работе с отзывами — нужно активно отвечать на комментарии и решать проблемы, о которых пишут люди.</p><p>Собственный сайт или блог разработчика тоже может привлечь внимание к приложению, особенно если у вас уже есть известный бренд.</p><h2>Подводим итоги</h2><p>Создание успешного приложения начинается с четкого определения цели и понимания потребностей пользователей. Затем нужно выбрать подходящие технологии, продумать необходимые функции, спланировать архитектуру и разработать понятный интерфейс. Обязательно проведите тщательное тестирование перед запуском. После публикации важно регулярно обновлять приложение на основе отзывов пользователей и данных аналитики, а также активно продвигать его в магазинах приложений и социальных сетях.</p><p>Не гонитесь за модными технологиями ради технологий — сосредоточьтесь на том, что действительно нужно вашим пользователям. Если вы создадите действительно полезный и удобный продукт, он найдет свою аудиторию и станет успешным.</p><p>iOS или Android? React Native или Flutter? Собираем все новости и гайды по мобильной разработке <a href="https://t.me/+Fb6_4ek5P6gzOTcy">тут</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Если бы я хотел стать разработчиком на Rust в 2025, с чего бы я начал?</title>
      <link>https://tproger.ru/articles/esli-by-ya-hotel-stat-razrabotchikom-na-rust-v-2025--s-chego-by-ya-nachal-</link>
      <comments>https://tproger.ru/articles/esli-by-ya-hotel-stat-razrabotchikom-na-rust-v-2025--s-chego-by-ya-nachal-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Анна Ельцова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/esli-by-ya-hotel-stat-razrabotchikom-na-rust-v-2025--s-chego-by-ya-nachal-</guid>
      <description><![CDATA[<p>Гайд по Rust. Показываем, что нужно знать, чтобы научиться языку программирования Раст. Рассматриваем пошаговую инструкцию и практические примеры ✔ Tproger</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/esli-by-ya-hotel-stat-razrabotchikom-na-rust-v-2025--s-chego-by-ya-nachal-">Если бы я хотел стать разработчиком на Rust в 2025, с чего бы я начал?</a>»</p>]]></description>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[C++]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[C#]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Haskell]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Асинхронное программирование]]></category>
      <category><![CDATA[WebAssembly]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Библиотеки]]></category>
      <category><![CDATA[Пет-проект]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 03 Apr 2025 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Rust — язык общего назначения, который ориентирован на высокую производительность и безопасное управление памятью. На нем можно писать софт практически для любого направления: CLI-утилиты, высоконагруженные сервера, десктопные приложения, мобильные приложения (с некоторыми оговорками), игры и игровые движки, прошивки для микроконтроллеров, операционные системы, драйвера и даже браузерные приложения (через компиляцию в WebAssembly).</p><p>В рейтинге языков программирования TIOBE Rust занимает 14 место. Для сравнения — в прошлом марте он был на 17 позиции. Вместе с экспертами <a href="https://solvery.io/?utm_source=article&amp;utm_medium=partner&amp;utm_term=tproger&amp;utm_content=rust_2025&amp;utm_campaign=main_page">Solvery</a> <a href="https://solvery.io/ru/mentor/bondiano?utm_source=article&amp;utm_medium=partner&amp;utm_term=tproger&amp;utm_content=rust_2025&amp;utm_campaign=vasiliy_kuzenkov">Василием Кузенковым</a>, full-stack разработчиком в Web3 стартапе, и <a href="https://solvery.io/ru/mentor/belyaev_dmitry?utm_source=article&amp;utm_medium=partner&amp;utm_term=tproger&amp;utm_content=rust_2025&amp;utm_campaign=belyaev_dmitriy">Дмитрием Беляевым</a>, Rust developer в Wildberries, разбираемся, как стать разрабом на Расте в 2025 году.</p><h2>Немного об особенностях</h2><p>Если вы до этого программировали на ООП языках, то вам, возможно, бросалось в глаза отсутствие привычных классов. Вместо них здесь алгебраические типы данных и трейты для решения expression problem. Их механизм куда больше похож на typeclasses из Haskell, что также будет для вас новой концепцией при построении крупных приложений, и нужно будет перестраивать мышление.</p><blockquote>Также когда стартуешь, немного непривычно работать с move-семантикой, RAII, borrow checker’ом и лайф-таймами. Но компилятор сыпет довольно подробными ошибками, которые можно легко поправить, если разобраться.</blockquote><p>А еще у Rust очень строгая типизация и очень мощная система типов, а сами типы построены так, чтобы предоставлять некоторые гарантии программисту. Например, ссылки в Rust всегда ссылаются на объект, гарантировано существующий в памяти, а стандартные строки содержат только валидный UTF-8. При этом в подавляющем большинстве случаев тип необязательно указывать явно, компилятор способен выводить типы, анализируя контекст функции целиком. Кроме того, Rust следует идеологии «компилируется, значит, работает». От логических ошибок, конечно, Раст не спасёт, но тем не менее очень большой пласт багов можно отловить на этапе кодинга. Да, это сложно, но лучше помучиться при разработке, чем потом разбираться почему упал прод.</p><p>Ещё одна отличительная фишка — абстракции с нулевой стоимостью. Rust позволяет писать высокоуровневый и понятный код, который при этом будет иметь ту же производительность, что и более низкоуровневый оптимизированный вручную вариант.</p><blockquote>Хороший пример здесь — итерация по различным коллекциям. Многие языки позволяют использовать итераторы с их абстракциями вроде map или filter. Только такой код, как правило, будет в несколько раз медленнее, чем если то же самое переписать на циклы. Компилятор Rust способен развернуть такой итератор в обычные циклы сам, и производительность будет сравнима, а порой даже лучше, так как программисты часто при написании низкоуровневого кода заставляют процессор делать много лишних вычислений.</blockquote><h2>Сложно ли переходить на Rust</h2><p>У Rust достаточно нетривиальная кривая входа, и без понимания некоторых важных принципов сложно написать код, который хотя бы будет компилироваться. Это относится не только к полным новичкам в программировании, но и к людям, которые уже владеют другим языком.</p><blockquote>На рынке фактически все вакансии требуют уже какого-то опыта в разработке. И сложность перехода сильно разнится от вашего текущего стека. Для Go-программиста переход будет средне-сложным, а язык, возможно, покажется перегруженным. Для С++ — менее сложным, но язык покажется местами ограничивающим. Я переходил на него с JS/TS’а и столкнулся со множеством низкоуровневых концепций, о которых раньше мог не задумываться. Но если у вас есть опыт в системном программировании — переходить будет в разы проще.</blockquote><p>Однако Rust прививает программисту очень много хороших привычек, которые меняют подход к написанию кода и на других языках. Это однозначно хороший выбор в качестве первого языка, но при условии, что у вас есть достаточно времени и терпения на освоение.</p><blockquote>В моей практике менторства много успешных кейсов перехода на Rust с самых разных языков, но проще всего он даётся тем, кто раньше писал на современном C++ и уже понимает такие концепции, как move-семантика и RAII. Много привычного здесь обнаружат и те, кто писал на функциональных языках (Haskell  или OCaml). Но в целом, для остальных тоже нет никаких проблем, даже если вы совсем новичок.</blockquote><h2>С чего начать изучать Rust</h2><p>Вместе со стартом в изучении языка с The Rust Book — бесплатной официальной книгой по Rust’у — стоит углубить свои знания в более низкоуровневых вещах: в чем разница стека и кучи, что такое разметка памяти и адресация в памяти, как работает процессор, подходы и проблемы многопоточного программирования, плюс почитать про операционные системы и сети. Если вы решили осознанно применять Rust, оно вам пригодится.</p><blockquote>Начать можно даже имея только самую базу в программировании: переменные, ветвления, циклы, функции. Крайне желательно разобраться в устройстве памяти, что такое стек и куча, а так же какие области памяти бывают помимо них.</blockquote><p>Вот примерный список того, что нужно учить на старте:</p><ul><li><b>Переменные.</b> Они по умолчанию неизменяемые (let x). Чтобы x стал изменяемым, нужно указать это явно через let mut. Константы (const) и статические переменные (static) вам будут нужны редко, они имеют свои особенности.</li><li><b>Типы.</b> Стоит разобраться с составными типами, такими как массивы и кортежи, а также с пользовательскими объявляемыми конструкциями struct (тип-произведение) и enum (тип-сумма). Также типы данных в Расте есть стандартные: bool, i32, u64 и прочие числовые, но строки могут удивить, так как их видов сильно больше.</li><li><b>Match.</b> Нужно понять такую вещь, как pattern-matching, познакомиться с оператором match, а также осознать, что pattern-matching применяется не только в нём, а везде, где возможно объявление переменных.</li></ul><p>Таким образом, вы можете сразу проверить что-то и присвоить результат в переменную:</p><p>Здесь мы сразу проверили и присвоили:</p><p>Тут нам потребовалась дополнительная изменяемая переменная.</p><h2>Что такое Cargo</h2><p>Cargo —  это консольная утилита, которая устанавливается вместе с компилятором языка. Она служит одновременно для управления зависимостями, сборки проекта и запуска тестов. Плюс для Cargo есть расширения, например, в поставке по умолчанию уже есть форматтер и линтер clippy.</p><p>Cargo рассчитан на то, что вы будете запускать его через терминал, самые полезные команды это:</p><ul><li>cargo new — создаёт новый шаблонный проект в указанной папке;</li><li>cargo build — собирает проект;</li><li>cargo run — собирает проект и запускает получившийся исполняемый файл;</li><li>cargo check — dry-run сборки, делает все проверки компилятора, но ничего не собирает, что заметно быстрее полноценной сборки;</li><li>cargo test — собирает проект со всеми тестами и запускает их;</li><li>cargo fmt — форматирует проект в общепринятый стиль кода;</li><li>cargo clippy — запускает линтер, очень полезно, можно подсказать более оптимальные варианты кода, найти некоторые потенциальные логические ошибки;</li><li>cargo install — устанавливает пакет, содержащий исполняемые файлы;</li><li>cargo clean — очищает все артефакты сборки.</li></ul><p>Cargo позволяет описать структуру, настройки (профили сборки, описание крейта) и зависимости вашего крейта или даже монорепозитория (с помощью workspace). Кроме непосредственного запуска через терминал, многие вещи могут запускаться через средства интеграции в IDE, такие как rust-analyzer для VSCode.</p><h2>Как работать с ownership, borrowing и lifetimes?</h2><p>Для многих новичков системы владения (ownership), заимствования (borrowing) и времен жизни (lifetimes) выливаются в борьбу с компилятором раста. Эти механизмы нужны в первую очередь для безопасности памяти без сборщика мусора. Общее правило владения такое:</p><p><i>Каждое значение в Rust имеет переменную, которая называется его <b>владельцем</b>. В каждый момент времени может быть только <b>один владелец</b>. Когда владелец выходит из области видимости, значение уничтожается.</i></p><p>Когда значение перемещается (передается другой переменной или функции), владение переходит, и исходная переменная становится недействительной.</p><p>Для типов, реализующих трейт Copy (например, целые числа, булевы значения), значения копируются автоматически:</p><p>Для более сложных типов нужно использовать метод clone(), чтобы создать глубокую копию. В местах программы, где производительность не так важна — использование clone() не возбраняется.</p><p>Если же у вас критичный к производительности кусок кода, то вам также понадобится заимствоватние и лайфтаймы.</p><p>Заимствование позволяет использовать значение без получения владения через ссылки (&amp; и &amp;mut). Для мутабельных ссылок `&amp;mut` есть дополнительные ограничения: в каждый момент времени может существовать только одна изменяемая ссылка на значение.</p><p>Нельзя иметь изменяемую ссылку, если уже есть неизменяемая ссылка на то же значение.</p><p>Времена жизни же гарантируют, что ссылки действительны на протяжении всего времени их использования.</p><p>Аннотация 'a указывает, что возвращаемая ссылка будет жить как минимум столько же, сколько кратчайшая из входных ссылок.</p><p>Общие советы по заимствованию здесь такие:</p><ul><li>Используйте ссылки, когда не нужно владение.</li><li>Возвращайте значения из функций для передачи владения обратно.</li><li>Используйте клонирование для создания новых экземпляров (с пониманием стоимости).</li><li>Используйте типы с трейтом Copy, когда это возможно.</li><li>Еще полезно не забывать о контейнерах. Rc&lt;T&gt; позволяет иметь несколько владельцев одного значения через счетчик ссылок, а RefCell&lt;T&gt; обеспечивает проверку правил заимствования в рантайме.</li></ul><h2>О структурах, перечислениях, модулях и функциях, замыканиях, итераторах</h2><p>Структуры (structs) в Rust позволяют создавать пользовательские типы данных, объединяющие связанные значения и выступающие типом произведения.</p><p>Перечисления (enum) позволяют определить тип, перечисляя все возможные варианты значений.</p><p>Перечисления в Rust являются типами суммы, поскольку значение может быть одним из вариантов:</p><p>Тип Shape представляет объединение (сумму) всех возможных вариантов. И к этому есть мощное сопоставление с образцом для работы с ADT:</p><p>Модули позволяют организовать код и контролировать видимость элементов. Определяются они через синтаксис mod &lt;name&gt; {} и могут быть вложенны друг в друга:</p><p>Также модули могут быть организованы в различных файлах (имя файла в таком случае будет именем модуля):</p><p>Импорт модуля осуществляется через ключевое слово use:</p><p>Функции в Rust определяются через ключевое слово fn:</p><p>Можно делать функции высшего порядка и передавать в них, как обычные, так и анонимные функции:</p><p>Еще одним элементом функционального программирования в Rust выступает итератор:</p><p>Здесь мы создаем собственный итератор Counter, реализуя стандартный трейт Iterator. Он используется для многих встроенных коллекций, таких как Vec или HashMap. Этот трейт особенно удобен из-за различных функциональных комбинаторов из стандартной библиотеки:</p><p>Трейт Iterator предоставляет множество методов адаптеров, таких как enumerate, filter или map, которые возвращают новый итератор. Методы адаптеров ленивые, они не запускают итерацию. Также есть методы исполнители, которые итерируют пока не закончатся значения, например, collect, fold или count.</p><p>Большинство коллекций (и ссылки на них) реализуют трейт IntoIterator (способность кастоваться в Iterator). Также IntoIterator автоматически реализуется для любого Iterator (ничего не стоящий каст сам в себя). Цикл for в Rust работает только с объектами, реализующими IntoIterator.</p><h2>Как обрабатывать ошибки в Rust</h2><p>В Rust принято разделять ошибки на 2 вида: паники и результаты операций:</p><ul><li><b>Паники</b> используются для непредвиденных ситуаций и ошибок программиста, например, деление целочисленного типа на 0 или выход за границу массива. И хотя паники можно отловить, стандартное и рекомендуемое поведение при них — программа упадёт, будет напечатан стектрейс.</li><li><b>Результаты операций</b> выражаются типом Result&lt;T, E&gt;, который является перечислением из двух вариантов — Ok(T) и Err(E). Такой подход гарантирует, что все ошибки строго типизированы, а без обработки ошибки невозможно извлечь результат операции.</li></ul><p>Option&lt;T&gt; используется для представления значения, которое может отсутствовать:</p><p>Result&lt;T, E&gt; используется для операций, которые могут завершиться ошибкой:</p><p>Для удобства проброса ошибок наверх существует оператор ?, который пишется после любого выражения, возвращающего Result, и возвращает Ok вариант. В случае Err варианта будет выход из функции с возвращением ошибки.</p><p>Обычно все ошибки описываются в перечислениях, а для уменьшения шаблонного кода используются крейты вроде <a href="https://google.github.io/comprehensive-rust/error-handling/thiserror.html">thiserror</a>.</p><h2>Про асинхронное программирование</h2><p>Асинхронное программирование в Rust строится вокруг трейта Future— его реализуют для типов, представляющих значение, которое будет доступно в будущем.</p><p>Также в Rust есть синтаксис async/await. Ключевым словом async могут быть отмечены функции и блоки кода — они будут возвращать анонимный тип, реализующий Future. Async-блоки также могут захватывать окружение подобно замыканиям. Внутри async-блоков и функций возможно использовать ключевое слово await на любом выражении, возвращающем Future или IntoFuture (способность кастоваться к Future). В отличие от других языков с подобным синтаксисом, await записывается через точку после выражения, что очень удобно для построения цепочек вычислений.</p><p>Для исполнения асинхронного кода необходим рантайм, но стандартная библиотека такого рантайма не предоставляет, поэтому приходится использовать сторонние библиотеки. Самым популярным рантаймом является библиотека tokio.</p><blockquote>В асинхронное программирование на Rust я рекомендую приходить уже после углубленного изучения языка, первых пет-проектов и небольшой работы с многопоточным кодом. Хотя синтаксис и общие правила работы с асинхронным кодом покажутся знакомыми тем, кто знает JS или C#, из-за более низкоуровневой природы языка работать с ним немного сложнее.</blockquote><h2>Что еще должен знать новичок в Rust</h2><p>Вот примерный список:</p><ul><li>Очень желательно погрузиться в устройство памяти процесса, узнать, что помимо стека и кучи существуют и другие области (например, исполняемый машинный код так же отражён на память, а static-переменные хранятся не в стеке и не в куче, а в своей собственной области). Неплохо было бы и разобраться с тем, что у типов помимо размера есть выравнивание. Что в Rust бывают ZST (zero size type) — типы, размер которых честный 0, и DST (dynamic size type) — типы, размер которых неизвестен во время компиляции.</li><li>Обязательно разобраться, как Rust освобождает память, не используя сборщик мусора. Почитать, что такое RAII. Понять, как работает трейт Drop.</li><li>Избавится от стереотипов о Rust. Rust — не самый сложный язык, как только вы поймёте, как он работает. Плюс платят за Rust, как правило, больше, чем на аналогичных позициях на других языках.</li><li>Оставить свои привычки из других языков (за исключением разве что Haskell/OCaml). Здесь не получится писать, как на C++/Java/Go и т.д. Привыкайте к хорошему и станете лучше, чем были до освоения Rust.</li></ul><h2>Что изучать, если есть вся база: чек-лист</h2><ul><li>Макросы и метапрограммирование</li><li>Unsafe Rust для низкоуровневого контроля</li><li>Интеграция с C/C++ через FFI</li><li>Разработка встраиваемых систем</li><li>WebAssembly</li><li><a href="https://doc.rust-lang.org/nomicon/">rustnomicon</a></li><li>Undefined Behavior</li><li>unsafe-код</li></ul><h2>Тренды на 2025 год</h2><p>На Rust’е пишут все. Более полный список можно посмотреть тут: <a href="https://github.com/rust-unofficial/awesome-rust">https://github.com/rust-unofficial/awesome-rust</a></p><p>Вот несколько топовых фреймворков и библиотек:</p><ul><li>serde — фреймворк для сериализации/десериализации</li><li>tokio, futures — для асинхронного программирования</li><li>clap — парсер аргументов командной строки</li><li>anyhow, thiserror — удобная работа с ошибками</li><li>chrono — работа с датой и временем</li><li>dashmap — многопоточная hashmap</li><li>bytes — эффективная работа с сырыми байтами</li><li>log, tracing — для логирования</li><li>reqwest — для http запросов</li><li>axum — для http сервера и REST api</li><li>mockall, test-case — упростит написание тестов</li><li>bevy — игры</li><li>clippy — линтер</li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Ученые из Гарварда оценили все open-source проекты в $8,8 трлн</title>
      <link>https://tproger.ru/news/uchenye-iz-garvarda-ocenili-vse-open-source-proekty-v--8-8-trln</link>
      <comments>https://tproger.ru/news/uchenye-iz-garvarda-ocenili-vse-open-source-proekty-v--8-8-trln?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/uchenye-iz-garvarda-ocenili-vse-open-source-proekty-v--8-8-trln</guid>
      <description><![CDATA[<p>Гарвард оценил ценность open-source в $8,8 трлн: 96% IT-продуктов используют свободный код, но создают его лишь 5% разработчиков</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/uchenye-iz-garvarda-ocenili-vse-open-source-proekty-v--8-8-trln">Ученые из Гарварда оценили все open-source проекты в $8,8 трлн</a>»</p>]]></description>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[HTML]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 21 Mar 2025 11:48:39 GMT</pubDate>
      <content:encoded><![CDATA[<p><b>Общая экономическая ценность open-source проектов составляет $8,8 трлн.</b> Такую сумму <a href="https://www.heise.de/en/news/Harvard-study-Open-source-has-an-economic-value-of-8-8-trillion-dollars-10322643.html">назвали</a> исследователи Гарвардской школы бизнеса.</p><p>Без свободного ПО компаниям пришлось бы тратить <b>в 3,5 раза больше на разработку</b> собственного софта.</p><p><b>Почти 96% всей кодовой базы современных IT-продуктов содержит open-source.</b> При этом 93% ценности создают <b>лишь около 3000 разработчиков по всему миру</b> — менее 5% от общего числа.</p><p>Ученые объясняют это тем, что узкий круг специалистов разрабатывает ключевые репозитории, которые масштабно переиспользуются.</p><h2>Сколько стоит создание и сколько — замена</h2><p>Из-за отсутствия ценников и продаж open-source нельзя оценить напрямую — как товар. Поэтому исследователи пошли другим путем: <b>они рассчитали «ценность предложения» и «ценность спроса»</b>.</p><ul><li><b>$4,15 млрд</b> — столько стоила бы разработка всех open-source проектов заново;</li><li><b>$8,8 трлн</b> — столько пришлось бы заплатить компаниям, если бы они создавали аналоги сами.</li></ul><p>То есть <b>спрос превышает предложение в 2000 раз</b>. Для сравнения: в 2020 году глобальные расходы на весь софт составили <b>$3,4 трлн</b> — в два с лишним раза меньше.</p><h2>Go — король корпоративного open-source</h2><p><b>Больше всего коммерческого спроса — у проектов на Go</b>. Их «ценность спроса» превышает $5 трлн, тогда как JavaScript — на втором месте с $1,2 трлн. Java и C уступают им почти вдвое.</p><p>При этом <b>стоимость создания Go-проектов оценивается в $803 млн</b> — это меньше, чем их потенциальная коммерческая выгода почти в 7000 раз.</p><p>Удивительно, но <b>Python при высокой популярности на GitHub имеет низкую стоимость предложения — $55 млн</b>. Это связано с тем, что крупные корпоративные системы реже завязаны на Python как основном языке.</p><h2>Open-source — общее благо</h2><p>Исследование базируется на анализе двух наборов данных: <b>open-source коде, интегрированном в продукты компаний, и коде, размещенном на их сайтах</b>. Операционные системы вроде Linux в расчет не брались.</p><p>В качестве основы для оценки использовались <b>данные о зарплатах разработчиков в 30 странах с наибольшей активностью на GitHub</b>.</p><p>Авторы подчеркивают: <b>open-source — это цифровое общественное благо</b>. Компании, которые его используют, должны активнее участвовать в его развитии. А <b>государства — поддерживать эти процессы на системном уровне</b>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Квантовые вычисления для разработчиков: когда нам придется учить новую математику?</title>
      <link>https://tproger.ru/articles/kvantovye-vychisleniya-dlya-razrabotchikov--kogda-nam-pridetsya-uchit-novuyu-matematiku-</link>
      <comments>https://tproger.ru/articles/kvantovye-vychisleniya-dlya-razrabotchikov--kogda-nam-pridetsya-uchit-novuyu-matematiku-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Вадим Егорцев]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kvantovye-vychisleniya-dlya-razrabotchikov--kogda-nam-pridetsya-uchit-novuyu-matematiku-</guid>
      <description><![CDATA[<p>Квантовые вычисления для разработчиков. Показываем, как квантовые вычисления помогут в программировании. Рассматриваем основные подходы и прогнозы на будущее ✔ Tproger</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kvantovye-vychisleniya-dlya-razrabotchikov--kogda-nam-pridetsya-uchit-novuyu-matematiku-">Квантовые вычисления для разработчиков: когда нам придется учить новую математику?</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Низкоуровневое программирование]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Квантовые вычисления]]></category>
      <category><![CDATA[IBM]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 21 Mar 2025 10:00:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Авторы научных работ по квантовой механике выдвигают противоречивые теории о физике частиц. Каждый ученый приводит доказательства, их ход мыслей кажется логичными.</p><blockquote>«Я думаю, что могу смело утверждать: квантовую механику не понимает никто».</blockquote><p>По этой причине многие идеи оставим без внимания — попытка их объяснения растянется на десяток страниц. Также не будет формул и страшных математических моделей.</p><p>Рассмотрим лишь то, что приблизит к ответу на вопрос: как квантовые вычисления повлияют на программирование в будущем.</p><h2>Определения и квантовая путаница</h2><h3>Кубиты</h3><p>Квантовые вычисления строятся на основе <b>кубитов</b>. Они существуют как физические объекты. Законы квантовой механики проявляются на фотонах, электронах, ионах, атомах.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-03-17/751e13eb-2cfa-42c8-8e68-d05bc09388ff.jpg" alt="" /><figcaption>Бит содержит только одно значение, кубит принимает все значения одновременно</figcaption></figure><p>Самое интересное — если обычный бит принимает значение 0 или 1, то кубит находится в <b>суперпозиции</b>. Его состояние описывают диапазоном от 0 до 1, и оно непрерывно меняется.</p><p>Суперпозицию можно рассмотреть на примере монетки. На столе она лежит орлом вверх (0), либо решкой (1). Теперь представьте, что монету подбросили, — она вращается в воздухе и находится как бы в обоих состояниях одновременно.</p><h3>Квантовая запутанность</h3><p>В квантовой механике что не явление, то необъяснимое событие. Одно из таких — <b>запутанность</b>. Два отдельных кубита оказываются «связаны», игнорируя расстояние.</p><p>Например, если измеряете один кубит, то автоматически узнаете состояние другого. Даже если второй находится на Марсе.</p><h3>Квантовый брутфорс</h3><p>Битами классических компьютеров управляют логические операторы — И, ИЛИ, НЕ.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-03-17/409f672b-7158-47f4-b759-b82ebaeb8a58.jpg" alt="" /><figcaption>Оператор НЕ инвертирует значение классического бита. При работе с кубитом используются квантовые преобразования, которые являются обратимыми</figcaption></figure><p>Состоянием кубитов управляют <b>гейты</b>. Они «переставляют» квантовые вероятности, чтобы получить диапазон с правильным ответом.</p><p>Представьте замок и 40 ключей. Только один из них подходит. Классический компьютер попробует каждый ключ по очереди. Квантовый образец одновременно «проверит» все варианты, затем с помощью гейтов сузит поиск до верного.</p><p>Суть в том, что квантовые методы вычисляют ответ всего за √N попыток вместо N, как в классическом переборе.</p><p>Последнее испытание гибкости вашей фантазии: <b>гейты выводят и удерживают кубиты в суперпозиции</b>. Это невероятно сложная задача.</p><p>Представьте идеально сбалансированную иголку. Ваша задача, как ученого, — установить иглу на самый кончик и удерживать в равновесии как можно дольше.</p><h2>Он — компьютер, но квантовый</h2><p>Есть мнение, что <b>квантовый компьютер (КК)</b> вовсе не компьютер, потому что выдает не точный, а приблизительный ответ.</p><p>Но он все равно компьютер! У него есть процессор, память, он следует алгоритмам. КК принимает входные данные и выдает результат, который можно обработать.</p><p>Справедливое замечание: без классического компьютера квантовые вычисления — бесполезны.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-03-17/8a1b0a82-38b7-45ae-b430-c965902b39d8.jpg" alt="" /><figcaption>Квантовый компьютер IBM</figcaption></figure><p>КК отсекает решения, невозможные из-за противоречивости, и обозначает предел с ответом. Искать это точное решение и выбирать из нескольких выданных вариантов — задача обычного ПК.</p><p>КК можно сравнить с аналоговым компьютером. В обоих устройствах происходит не вычисление, а измерение результата.</p><h2>Как квантовые вычисления повлияют на программирование</h2><p>Криптог<b>р</b>афия — одна из первых областей, где развитие индустрии квантовых вычислений обещает серьезные изменения. Современные методы шифрования уязвимы при применении квантовых алгоритмов.</p><p>С появлением достаточно мощного КК использование RSA и AES будет небезопасным. Поэтому IT-компании уже разрабатывают <a href="https://tproger.ru/articles/skolko-vremeni-u-nas-ostalos-do-ugrozy-kriptografii-">квантовую криптографию</a>, чтобы защитить данные до появления угрозы.</p><p>В будущем интеграция квантовых технологий решит проблемы <b>оптимизации</b>. Компьютеры будут определять наилучшее решение среди огромного числа вариантов. Актуально для маршрутизации и планирования производства.</p><p><b>Машинное обучение</b> тоже выигрывает от развития квантовых вычислений. Скорость обучения нейросетей увеличится в разы.</p><h3>Классические алгоритмы vs квантовые алгоритмы</h3><p>Классические алгоритмы работают последовательно, а квантовые сокращают количество шагов благодаря параллельной обработке через суперпозиции кубитов.</p><p>Например, алгоритм Шора. Он раскладывает числа на множители, но работает только на квантовом компьютере.</p><p>На классическом ПК методы нахождения множителей начинают работать медленнее. Скорость замедления растет с величиной числа. Классические методы требуют так много вычислений, что время выполнения растет экспоненциально (как снежный ком):</p><ul><li>Для числа размером 2 цифры — очень легко.</li><li>Для числа размером 10 цифр — сложнее, но реально.</li><li>Для числа размером в 300 цифр (как в RSA-криптографии) — может занять тысячи лет.</li></ul><p>С развитием индустрии квантовых технологий число, на разложение которого ушли бы тысячи лет, будет разобрано за несколько часов или дней.</p><p>Другой пример — алгоритм Гровера. Он ускоряет поиск в неструктурированных базах данных.</p><p>В списке из 1000 элементов обычный компьютер проверит до 1000 записей. Алгоритм Гровера проверит всего √1000 ≈ 31 запись.</p><h2>Нужны ли новые языки программирования?</h2><p>Для квантовых измерений только традиционных языков программирования недостаточно.</p><h4>Qiskit</h4><p>Разработчик: IBM</p><p>Популярный Python-фреймворк для программирования квантовых алгоритмов. На нем можно написать программу и выполнить ее на симуляторе. Есть возможность запускать алгоритмы на реальных квантовых компьютерах IBM через облако.</p><h4>Cirq</h4><p>Разработчик: Google</p><p>Библиотека на Python для создания и тестирования технологий квантового вычисления. Cirq чаще используют для работы с алгоритмами Гровера, Шора и др. Программу можно протестировать на симуляторе.</p><h4>Q#</h4><p>Разработчик: Microsoft</p><p>Q# — это часть <a href="https://learn.microsoft.com/en-us/azure/quantum/install-overview-qdk">Microsoft Quantum Development Kit</a> (QDK). Он содержит инструменты для симуляции, разработки программ и интеграции квантовых вычислений с кодом на C# или Python.</p><h2>Какая математика потребуется разработчикам?</h2><p>Разработчик должен уметь работать с <b>матрицами </b>и <b>векторами</b>, потому что с их помощью описывают состояния кубитов и операции над ними.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-03-17/35bc3bfc-41ac-439e-a801-f9a2b9c60db7.jpg" alt="" /><figcaption>Фрагмент задачи по квантовой механике</figcaption></figure><p>Векторы показывают, где кубит «находится» в пространстве, а матрицы управляют его изменениями.</p><p>Все квантовые операции — это просто умножение вектора состояния на матрицы. Но результат нельзя узнать до момента измерения, поэтому вероятность каждого расчета задается квадратичными модулями коэффициентов.</p><p>Квантовые вычисления невозможно представить без <b>комплексных чисел</b>. Они учитывают направление фазы, необходимое для описания интерференции (суперпозиции).</p><p>В будущем программист должен понимать, как измерения кубитов приводят к результатам с заданной вероятностью, и уметь моделировать суперпозицию.</p><h2>Когда начинать изучать квантовые вычисления?</h2><p>Развитие квантовых технологий находится на этапе перехода от исследовательской стадии к практике в реальных приложениях. До массового внедрения далеко, десятки лет.</p><p>Уходить сегодня из фронтенда в разработку квантовых программ — это как создавать ИИ в 80-х годах.</p><p>Основное ограничение — количество активных кубитов и стабильность вычислений. Процессор IBM Condor с 1121 кубитом побил рекорд по мощности, но поддержание кубитов в суперпозиции и подавление квантового шума остаются нерешенными проблемами.</p><p>Сегодня использование квантовых вычислений сводится к узким задачам: симуляции материалов, исследованию химических соединений.</p><h3>Какие компании уже инвестируют в квантовые вычисления?</h3><p><b>IBM </b>— лидер в разработке квантовых технологий. Их платформа IBM Quantum Experience предоставляет доступ к настоящим квантовым компьютерам через облако.</p><p>В 2016 году компания запустила первый публичный квантовый процессор и продолжает увеличивать масштаб вычислений, предлагая обучение и инструменты для разработчиков Qiskit.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-03-17/31ed3a87-6a14-4b2b-9abb-0f8ebde7fac2.jpg" alt="" /><figcaption>Квантовый процессор Google на 54 кубита</figcaption></figure><p><b>Google</b> тоже добилась успеха, заявив о квантовой супрематии — решении задачи, недостижимой для классических компьютеров, с помощью своего процессора Sycamore. Google работает над оптимизацией алгоритмов и предоставляет инструменты для программирования на платформе Cirq.</p><p><b>Microsoft </b>раньше других взялась за развитие языка программирования для квантовых вычислений — Q#. Вместе с этим доступен Quantum Development Kit, который моделирует квантовые программы и тестирует на симуляторах.</p><p><b>Amazon </b>тоже не осталась в стороне. Компания предлагает облачный сервис AWS Braket, интегрирующий работу с квантовыми симуляторами.</p><p>При появлении первых ПК компании разрабатывали собственные операционные системы, процессоры и платформы. Сегодня квантовые технологии находятся на той же стадии — это начало глобальной гонки за квантовую мощь.</p><p><b>Через 5 лет</b> квантовые компьютеры, вероятно, достигнут промежуточной стадии применения. Усилия будут направлены на коррекцию ошибок.</p><p><b>Через 10 лет</b> можно ожидать стабильных образцов с тысячами кубитов. Это станет отправной точкой для коммерческой квантовой индустрии.</p><p><b>Спустя 20 лет</b> квантовые компьютеры, вероятно, станут частью бизнеса. Их будут применять разработчики, работающие с криптографией, ИИ, аналитикой. К этому времени квантовые вычисления станут массовым явлением.</p><p>Возможно, поколение разработчиков в 2045 году будет изучать квантовую механику наряду с классической информатикой.</p><h2>Инструменты и платформы для начала работы</h2><p>Если не терпится попробовать квантовую разработку, обратите внимание на следующие инструменты.</p><h3>IBM Quantum Experience и Qiskit</h3><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-03-17/cb287521-bb3e-4d57-8566-f69544559aa9.jpg" alt="" /><figcaption>Интерфейс IBM Quantum. Построение схемы квантовой телепортации</figcaption></figure><p><a href="https://quantum.ibm.com/">IBM Quantum Experience</a> — это облачная платформа. Она поддерживает запуск кода на реальном квантовом компьютере — 5-кубитном IBM Quito. Платформа содержит учебные курсы, в том числе серию статей по основам квантовой механики.</p><p>Чтобы программировать кубиты, зарегистрируйтесь на IBM Quantum Experience и познакомьтесь с библиотекой Python Qiskit.</p><p>Пример квантовой схемы:</p><p>В библиотеке Qiskit есть модули для изучения оптимизации, машинного обучения и квантовой химии. Если хотите протестировать программу на реальном образце КК, подключайтесь через API.</p><h3>Google Cirq</h3><p><a href="https://quantumai.google/cirq">Google Cirq</a> — это библиотека Python для создания, выполнения и отладки квантовых вычислений на симуляторах или реальном оборудовании Google. Cirq подходит для тех, кто хочет более программно ориентированный подход к квантовой механике.</p><p>Особенности:</p><ul><li>Cirq задает низкоуровневую структуру операций над кубитами.</li><li>Полностью бесплатная библиотека, поддерживаемая Google.</li><li>Интеграция квантовых и классических инструментов в одном коде.</li></ul><p>Пример квантовой схемы:</p><p>Чтобы использовать физический процессор, нужно подключиться к облаку Google Quantum.</p><figure><img src="https://media.tproger.ru/user-uploads/105601/2025-03-17/fa56a90c-238c-40b7-a6e9-0a5d6fda37c4.jpg" alt="" /><figcaption>Схематическое представление архитектуры квантового процессора Sycamore</figcaption></figure><h3>Microsoft Q#</h3><p><b>Q#</b> — язык с высоким уровнем абстракции. Его используют, чтобы сосредоточиться на алгоритмах без погружения в низкоуровневую обработку кубитов.</p><p>Для работы с Q# понадобится Quantum Development Kit, .NET, расширение для Visual Studio или VS Code.</p><p>Простая программа на Q#:</p><p>Код выполняется через симулятор, встроенный в QDK.</p><p>Microsoft предлагает облако с доступом к реальным квантовым процессорам. После настройки учетной записи Azure можно отправлять программы на лабораторные компьютеры и гибридные симуляторы.</p><h2>Симуляторы</h2><p>Чтобы лучше понять работу квантовых вычислений, стоит начать с симуляторов:</p><ul><li><b>IBM Aer.</b> Входит в состав Qiskit, имитирует шумовые и идеальные квантовые процессы.</li><li><b>Google Cirq’s Simulator</b>. Интегрирован в библиотеку Cirq, поддерживает широкий спектр квантовых операций.</li><li><b>Microsoft Quantum Simulator</b>. Разработан для работы с Q#, позволяет запускать программы и тестировать квантовые алгоритмы.</li><li><b>QuTip</b>. Библиотека Python для работы с квантовыми системами, поддерживает симуляцию квантовых состояний, унитарных операций и вычислений.</li></ul><p>Если вы новичок — используйте Qiskit + IBM Aer.</p><p>Любите низкоуровневое программирование? Google Cirq — ваш выбор.</p><p>Чувствуете, что вам нужен язык высокого уровня с интеграцией в классические приложения? Тогда изучайте Q# + Microsoft Quantum Simulator.</p><h2>Что в итоге?</h2><p>Квантовые компьютеры не заменят классические — они дополнят их, решая специфические задачи. Симулировать кубиты непросто: для будущей интеграции квантовых технологий придется пополнить стек новой библиотекой и пройти курс по квантовой физике.</p><p>IBM, Microsoft и Google развивают экосистемы для новых специалистов. Есть симуляторы и обучающие материалы. Они немного облегчают вход в эту сферу.</p><p>Перед изучением темы нужно признать, что квантовые вычисления — это, без преувеличения, самое сложное направление программирования.</p>]]></content:encoded>
    </item>
    <item>
      <title>Энтузиаст изучил код ядра Linux и рассказал, как оно работает изнутри</title>
      <link>https://tproger.ru/news/entuziast-izuchil-kod-yadra-linux-i-rasskazal--kak-ono-rabotaet-iznutri</link>
      <comments>https://tproger.ru/news/entuziast-izuchil-kod-yadra-linux-i-rasskazal--kak-ono-rabotaet-iznutri?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/entuziast-izuchil-kod-yadra-linux-i-rasskazal--kak-ono-rabotaet-iznutri</guid>
      <description><![CDATA[<p>Разработчик изучил код ядра Linux и рассказал, как оно управляет процессами, памятью и прерываниями. Разбор работы CFS, syscalls и синхронизации</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/entuziast-izuchil-kod-yadra-linux-i-rasskazal--kak-ono-rabotaet-iznutri">Энтузиаст изучил код ядра Linux и рассказал, как оно работает изнутри</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 06 Mar 2025 20:19:05 GMT</pubDate>
      <content:encoded><![CDATA[<p>Разработчик <b>Лука Каваллин</b> решил глубже <a href="https://www.lucavall.in/blog/a-quick-journey-into-the-linux-kernel">разобраться</a> в механизмах работы ядра <b>Linux</b> и поделился своими открытиями после изучения <b>Linux Kernel Development</b> Роберта Лава и анализа исходного кода.</p><p>Несмотря на то, что книга посвящена устаревшей версии <b>Linux 2.6</b>, многие концепции до сих пор актуальны.</p><h2>Как устроена работа ядра Linux</h2><p>По словам Каваллина, программирование в ядре Linux существенно отличается от работы в пользовательском пространстве.</p><p>Среди ключевых особенностей он выделил:</p><ul><li><b>Отсутствие стандартной библиотеки C</b> – вместо нее используются встроенные аналоги из ядра.</li><li><b>Жесткие ограничения на память</b> – размер стека фиксирован (например, <b>8 КБ </b>на <b>64-битных</b> системах).</li><li><b>Ошибки могут привести к сбоям в системе</b> – некорректный доступ к памяти вызовет «oops», что потенциально может привести к краху всей ОС.</li></ul><p>Каваллин также отметил, что в <b>Linux потоки и процессы не являются разными сущностями</b>. Они представляют собой один объект – <b>task_struct</b>, а функции <b>clone()</b>, <b>fork()</b>, <b>pthread_create()</b> просто создают его вариации.</p><h2>Как ядро Linux выбирает, что запустить?</h2><p>Одной из ключевых задач ядра является планирование процессов.</p><p>В Linux этим занимается <b>Completely Fair Scheduler (CFS)</b>, который распределяет процессорное время по принципу <b>виртуального времени (vruntime)</b>.</p><ul><li><b>Процессы с высоким приоритетом</b> получают больше времени на выполнение, так как их vruntime растет медленнее.</li><li><b>Используется красно-черное дерево</b>, где в первую очередь запускается процесс с наименьшим vruntime.</li><li><b>Реальное время (RT) обрабатывается отдельно</b> – процессы с приоритетом <b>от 0 до 99</b> выполняются раньше обычных задач.</li></ul><h2>Системные вызовы и работа с ядром</h2><p>Системные вызовы – это точка входа из пользовательского пространства в ядро.</p><p>Они обрабатываются через <b>syscall</b>, а ядро проверяет переданные параметры с помощью <b>copy_from_user()</b> и <b>copy_to_user()</b>, предотвращая утечки памяти и ошибки доступа.</p><h2>Прерывания и работа с устройствами</h2><p>Для обработки аппаратных событий Linux использует <b>прерывания</b>, которые делятся на два уровня:</p><ol><li><b>Верхний уровень (ISR, Interrupt Service Routine)</b> – выполняет только критически важные операции, так как в этот момент остальные прерывания отключены.</li><li><b>Нижний уровень (bottom half)</b> – завершает обработку через <b>tasklet</b>, <b>softirq</b> или <b>workqueue</b>, снижая нагрузку на систему.</li></ol><p>Каждое прерывание в Linux возвращает <b>IRQ_HANDLED</b>, если оно обработано, или <b>IRQ_NONE</b>, если источник сигнала не был обнаружен.</p><h2>Синхронизация и защита от гонок данных</h2><p>Каваллин подчеркнул, что работа ядра на многопоточных системах требует защиты от <b>гонок данных</b>. Для этого применяются:</p><ul><li><b>spinlock</b> – блокировка без ожидания, используется в обработке прерываний.</li><li><b>mutex и семафоры</b> – механизмы ожидания освобождения ресурса.</li><li><b>seqlock</b> – механизм, позволяющий приоритетно обновлять данные.</li></ul><h2>Вывод</h2><p>По мнению Каваллина, работа с ядром Linux требует учитывать множество низкоуровневых аспектов: <b>ограничения по памяти, обработку прерываний, синхронизацию и особенности управления процессами</b>.</p><p>Однако детальное изучение этих механизмов помогает лучше понять, <b>как современные операционные системы управляют ресурсами и выполняют вычисления на уровне железа</b>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Самый популярный Linux-дистрибутив Ubuntu отметил 20-летие</title>
      <link>https://tproger.ru/news/--samyj-populyarnyj-linux-distributiv-ubuntu-otmetil-20-letie</link>
      <comments>https://tproger.ru/news/--samyj-populyarnyj-linux-distributiv-ubuntu-otmetil-20-letie?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/--samyj-populyarnyj-linux-distributiv-ubuntu-otmetil-20-letie</guid>
      <description><![CDATA[<p>Самый популярный Linux-дистрибутив празднует 20-летие. За два десятилетия Ubuntu изменила экосистему свободного ПО, став стандартом для миллионов пользователей и ключевым игроком в развитии облачных технологий</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/--samyj-populyarnyj-linux-distributiv-ubuntu-otmetil-20-letie">Самый популярный Linux-дистрибутив Ubuntu отметил 20-летие</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 21 Oct 2024 04:12:32 GMT</pubDate>
      <content:encoded><![CDATA[<p>Двадцать лет назад, 20 октября 2004 года, была опубликована первая версия дистрибутива Ubuntu 4.10 «Warty Warthog».</p><p>Проект был основан Марком Шаттлвортом, миллионером из Южной Африки, принимавшим участие в разработке Debian и воодушевлённым идеей создания доступного для конечных пользователей настольного дистрибутива с предсказуемым циклом разработки.</p><p>К разработке были привлечены несколько разработчиков из Debian — многие из них до сих пор принимают участие в развитии обоих проектов.</p><p>Первая версия Ubuntu поставлялась с GNOME 2.8, Firefox 0.9 и OpenOffice.org 1.1.2. Ubuntu 4.10 остаётся доступной для <a href="https://old-releases.ubuntu.com/releases/4.10/">загрузки</a> и сегодня, что позволяет взглянуть, как выглядела система 20 лет назад.</p><figure><img src="https://media.tproger.ru/user-uploads/98945/2024-10-21/22f35bc1-3e9b-4434-945b-583e2fc73fa4.jpg" alt="" /></figure><h2>Как Ubuntu изменила мир Linux</h2><p>Ubuntu стала одной из самых популярных и узнаваемых версий Linux.</p><p>Её успех был обусловлен удобством использования, регулярными обновлениями и дружелюбным сообществом.</p><p>С самого начала разработчики уделяли особое внимание тому, чтобы сделать дистрибутив максимально доступным для всех — от новичков до профессионалов. Это привело к тому, что Ubuntu стала стандартом для множества пользователей, которым нужен стабильный и простой в использовании Linux.</p><h2>Достижения и влияние</h2><p>Ubuntu повлияла не только на мир Linux, но и на всю экосистему свободного ПО. С её появлением стало проще установить и использовать Linux на домашних и рабочих компьютерах.</p><p>Это привело к росту популярности Linux среди широкой аудитории и положило начало множеству других проектов и инициатив, таких как Ubuntu Server, Ubuntu Touch и т.д.</p><p>Ubuntu также сыграла ключевую роль в развитии облачных технологий.</p><p>Canonical, компания, стоящая за Ubuntu, активно продвигает решения на основе Ubuntu для серверов и облаков, что делает её важным игроком в мире технологий и ИТ-инфраструктуры.</p>]]></content:encoded>
    </item>
    <item>
      <title>Puter: интернет-ОС на JavaScript</title>
      <link>https://tproger.ru/news/puter--internet-os-na-javascript-s-otkrytym-ishodnym-kodom-i-vozmozhnostyu-samohostinga</link>
      <comments>https://tproger.ru/news/puter--internet-os-na-javascript-s-otkrytym-ishodnym-kodom-i-vozmozhnostyu-samohostinga?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/puter--internet-os-na-javascript-s-otkrytym-ishodnym-kodom-i-vozmozhnostyu-samohostinga</guid>
      <description><![CDATA[<p>Puter — open source интернет-ОС в браузере. Самохостинг, 22 000+ звёзд на GitHub, 38 языков. Полноценный рабочий стол без установки — попробуйте сейчас.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/puter--internet-os-na-javascript-s-otkrytym-ishodnym-kodom-i-vozmozhnostyu-samohostinga">Puter: интернет-ОС на JavaScript</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 14 Aug 2024 03:02:29 GMT</pubDate>
      <content:encoded><![CDATA[<p>Проект Puter — это интернет-операционная система с открытым исходным кодом и интересной историей успеха, которая к тому же стремительно завоевывает популярность среди разработчиков и энтузиастов.</p><p>Впервые представленная на платформе Reddit, Puter предлагает пользователям возможность работать с полноценной ОС через браузер, обеспечивая легковесность и гибкость.</p><p>Puter — браузерная интернет-ОС с открытым исходным кодом: полноценный рабочий стол, файловый менеджер и терминал без установки.</p><p>Поддерживает самохостинг — разворачивайте на своём сервере и полностью контролируйте среду и данные.</p><p>За год проект набрал более 150 000 установок, 22 000 звёзд на GitHub и локализацию на 38 языков.</p><p>JavaScript-стек и открытый API позволяют разработчикам встраивать Puter в свои приложения или расширять его функциональность.</p><h2>История создания и развитие проекта</h2><p>Puter был анонсирован еще два года назад, но свой рост начал лишь весной 2024 года и достаточно быстро привлек внимание благодаря своей открытости и доступности.</p><p>Проект, начавшийся как личная инициатива одного разработчика, за короткое время собрал внушительное сообщество. Сегодня Puter насчитывает более 150 000 установок, 22 000 звезд на GitHub и поддерживается на 38 языках.</p><h2>Особенности и возможности</h2><p>Puter — это не просто браузерная ОС, а мощная среда для разработки и управления веб-приложениями.</p><p>Одним из ключевых преимуществ является возможность самохостинга, что позволяет пользователям контролировать свою рабочую среду.</p><p>Открытый исходный код делает Puter доступной для модификации и расширения. Это особенно привлекает разработчиков, стремящихся настроить систему под свои нужды.</p><h2>Удобство использования и интерфейс</h2><p>Если вас интересует тема открытых проектов, читайте также: <a href="https://tproger.ru/articles/github-open-source-proekty">лучшие open source-проекты на GitHub</a> и <a href="https://tproger.ru/articles/javascript-frejmvorki-obzor">обзор актуальных JavaScript-фреймворков</a>.</p><p>Puter предлагает знакомый интерфейс рабочего стола с интуитивно понятными элементами управления. Пользователи могут легко запускать скрипты, управлять файлами и использовать терминал прямо в браузере, что делает систему удобной для выполнения различных задач, в том числе и в удаленном формате.</p><h2>Поддержка сообщества и будущее</h2><p>Проект активно поддерживается международным сообществом, которое вносит изменения в код, предлагает новые идеи и создает приложения на базе Puter.</p><p>В будущем разработчики планируют продолжать развитие системы, улучшая её функционал и добавляя новые возможности.</p><p>Puter демонстрирует, как открытость и поддержка сообщества могут превратить небольшую инициативу в глобальное движение, способное изменить подходы к разработке и использованию программного обеспечения.</p><p>Ознакомиться с проектом можно через его <a href="https://github.com/heyPuter/puter/">официальный репозиторий</a>. Лайв-демо Puter также доступно <a href="https://puter.com/">по ссылке</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Linux — проще, чем кажется</title>
      <link>https://tproger.ru/articles/linux---proshhe--chem-kazhetsya</link>
      <comments>https://tproger.ru/articles/linux---proshhe--chem-kazhetsya?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Watoc Masc]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/linux---proshhe--chem-kazhetsya</guid>
      <description><![CDATA[<p>Преподнесение ОС Linux, как простой ОС, нежели сложной в своем настоящем понимании, что справится с ней, сможет каждый и приложить усилий, нужно столько же, сколько и к любой другой ОС. Вкратце об ОС, актуальность и возможности ОС, личный опыт, будущее ОС.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/linux---proshhe--chem-kazhetsya">Linux — проще, чем кажется</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 01 Jul 2024 09:18:52 GMT</pubDate>
      <content:encoded><![CDATA[<h2>Введение</h2><p>Я открываю марафон, по такой замечательной, эффективной, стабильной и пожалуй, уникальной операционной системе Linux. Марафон продлится, может быть, на парочку статей. Я расскажу о самой ОС, ее отличиях и актуальности как для пользователя, так и для мира, закончу личным опытом и мыслями о будущем.</p><p><b>Уверен многие слышали о Linux</b>, но не осмеливались переходить или пробовать данную ОС. Возможно из-за комментариев на форумах, сайтах, в каких-либо других сообществах, где комментарии  олицетворяли ОС, как сложную, тяжкую и подавляющую всякое желание ее устанавливать/пробовать, но поверьте  — это, лишь 20% от правды и то в зависимости от <b>дистрибутива </b>(некая ОС построенная на ядре Linux, которая может отличаться от своих <i>ядро-соратников</i>).</p><p>Многие "<b>умельцы</b>" умудряются сравнивать<b> Linux и Windows</b>, ладно бы <b>Macintosh и Linux</b>, но нельзя сравнивать с <b>Windows</b>, скажу кратко — это как <b>фрукт и овощ</b>, в остальном забудьте, Linux не стоит рядом с Windows, как и Windows с Linux.</p><p><b>Об истории зарождения Linux</b>, а точнее UNIX — ее корня развития, я умолчу, ибо оно вам не надо, для того, чтобы попробовать, влиться в эту ОС. Все, что вам нужно — это, причины, по которым вы, точно захотите установить себе Linux, а точнее, какой-либо из дистрибутивов, но о них позже.</p><figure><img src="https://media.tproger.ru/user-uploads/30374/2024-06-21/d60db243-cb70-4415-9b88-ff262effbd1c.jpg" alt="" /></figure><p><b>Linux</b> — <b>разнообразен</b>, <b>свободен</b>, <b>стабилен </b>(в прямых руках) и самое важное (на мой взгляд), это ваш собственный пирог. <b>То, что позволено в Linux, ни позволено не в одной ОС, то, что возможно в Linux, зачастую невозможно в других ОС</b> и наконец, <b>внутри Linux</b> (в зависимости от дистрибутива, но зачастую во всех) <b>вы вольны делать, что душе угодно</b>.</p><p><i>Путь в удивительно разнообразный и свободный, для мысли и дел мир, начинается...</i></p><h2>Глава 1. Почему, так страшно, хотя еще ничего нет</h2><p><b>Linux  </b>— это лишь ядро, на этом ядре работают многие популярные на рынке, <b>дистрибутивы</b>, и все они разные, по <b>внешнему виду</b> и <b>внутренний работ</b>е, но у всех них, есть единое сердце, которое их и объединяет, хоть и не между собой, а по общим знаниям.  Это практически, как в языках программирования, освоив один, в последствии, сможешь уже с меньшими усилиями, освоить и другой.</p><figure><img src="https://media.tproger.ru/user-uploads/30374/2024-06-21/793d7450-6a25-45c0-876b-7bce1b449896.png" alt="" /></figure><p>Существуют дистрибутивы, которые, после установки имеют <b>графическую оболочку</b> (<b>GUI</b>), а некоторые ее не имеют, вместо GUI, у них <b>CLI </b>(<b>консольная среда</b>, черный экран белые шрифта). Графические оболочки различаются между собой, зачастую внешним видом и функционированием внешнего вида, но независимо от GUI, все дистрибутивы работают с такой замечательной программой как <b>консоль </b>(<b>терминал</b>), они бывают разные, а большинство из них поддерживают популярные <b>командные оболочки</b> как <b>Bash</b>, <b>Zsh </b>и пр.</p><figure><img src="https://media.tproger.ru/user-uploads/30374/2024-06-21/549eb51c-f06a-4ddb-ba00-b8a7e9dd906d.png" alt="" /></figure><p><i>Если вам приходилось работать в CMD/PowerShell в Windows, то это, то же самое, что и Bash в Linux, только круче.</i></p><p>На сегодня, вам доступно масса методов к установке/созданию/крафту собственного дистрибутива, но не будем, пока думать, что дистрибутивы можно создавать в ручную, остановимся на том, что имеем на рынке:</p><ul><li><b>Debian </b>

—

 стабильный, проверенный многолетним стажем дистрибутив, готовый с коробки.</li></ul><ul><li><b>Arch Linux</b> 

—

 стабильный, ориентированный на ручную настройку всех компонентов.</li></ul><ul><li><b>Ubuntu </b>—

 мобильный, простой и эффективный дистрибутив, подходящий для любого пользователя.</li></ul><ul><li><b>CentOS </b>— коммерческий продукт, доступный бесплатно, обычный дистрибутив.</li></ul><ul><li><b>Fedora </b>— комплексное решение для продвинутых пользователей.</li></ul><ul><li><b>Kali Linux</b> — ориентированный на белых хакеров и прочих тестеров в ИБ, дистрибутив.</li></ul><p>В самом деле, дистрибутивов масса, есть как для новичков (Ubuntu, Mint, Manjaro), так и для продвинутых и/или средних пользователей (Arch, Kali, Debian, Fedora).</p><p><i>Если вы хотите знать, с какого дистрибутива начать, а по какой закончить, я приведу список в конце статьи.</i></p><p><b>А теперь о том, как эти дистрибутивы могут выглядеть:</b></p><figure><img src="https://media.tproger.ru/user-uploads/30374/2024-06-21/06694827-cf4d-494b-86f6-a07db5709429.jpg" alt="" /></figure><p><a href="https://linux.s-199.edusite.ru/p25aa1.html">Впрочем, здесь вы можете увидеть больше информации и подобрать для себя, что-нибудь.</a></p><p>Пришло время, поговорить о следующей важной вещи, а это командной оболочки. Пожалуй, самая популярная — это <b>bash</b>. По умолчанию в большинстве дистрибутивов, используется именно эта, командная оболочка. Bash, очень важен, ведь все существующие команды, которые пишутся в <b>консоли </b>и <b>управляют системой</b>, от самых безобидных, которые <b>перемещают вас из директории в директорию</b>, до <b>уничтожения всей системы</b>.</p><p><i>Я, не буду приводить команды Bash и их описание, а также, для чего они нужны, а вы пишите комментарии, хотите ли видеть, статью по Bash.</i></p><p>С помощью Bash или любой другой, <b>командной оболочки</b>, можно, ни только <b>упростить свою работа в ОС</b>, а еще и <b>автоматизировать </b>ее тем, что разрабатывая <b>скрипты</b>, настраивая <b>конфигурационные файлы </b>(на которых вся система и держится), да и вообще, разворачивать ОС <b>под себя</b>, с помощью <b>Bash</b>.</p><p>Захотели обновление ОС в определенное время, пожалуйста. Кастомизация отдельного текста, окна, вида программ, конечно. Некую защиту от вирусов и стабильность в производительности, посредством open source ПО, есть такое.</p><p><b><i>Петя, ваш кореш, хочет вас взломать? Петю можно послать, если вы на Linux дистрибутиве. </i></b></p><p>И это верно, несмотря на то, что <b>Linux</b>, является <b>безопасной системой</b>, безопаснее, даже Windows и в какой-то степени MacOS, он не лишен <b>вероятности взлома</b>, да, в нем множество <b>утилит</b>, есть <b>доступные брандмауэры</b>, которые защитят ОС, но в остальном, как и для <b>любой другой ОС</b>, как вы настроите, как вы будете пользоваться своей ОС, так и<b> вирусы с троянами, вас будут посещать</b>.</p><p><b>Linux </b>— это <b>возможность</b>, начать новую жизнь в цифровом пространстве, ведь работа связанная ИТ, там <b>живет/цветет/дышит</b>, иначе. Это идеальная среда для <b>программиста</b>, <b>разработчика</b>, а вскоре, даже и <b>дизайнера </b>(сам этого жду), <b>аналитика данных</b>, <b>математика </b>и <b>ученого</b>,  и т.д.</p><p><b>Linux</b> —  для вас, если:</p><ul><li>Вы заинтересованы в обучении, как работают ОС, процессы и потоки, архитектура ОС</li><li>Готовы к приключениям, ведь новая ошибка, это новый путь</li><li>Готовы потрудиться, чтобы разобраться, а это вам даст, понимании кастомизации, автоматизации и процветания в данной ОС</li><li>У вас есть мозги</li><li>Вы совершенный новичок в компьютерах</li><li>Вчера купили себе ноутбук</li></ul><p><b>

Примитивная последовательность, знакомства с дистрибутивами:</b></p><ol><li>Ubuntu</li><li>Manjaro</li><li>Fedora</li><li>Arch Linux/Debian</li></ol><p><b>На этом, первая статья подходит к концу.</b> Пишите в комментариях, что вы думаете о данной статье, ваши предложения, для второй статьи, а также ваш опыт в ОС Linux, будет интересно почитать. До следующей статьи...</p>]]></content:encoded>
    </item>
    <item>
      <title>Как создать классную среду для разработчиков — взгляд Aurora Foundation</title>
      <link>https://tproger.ru/articles/kak-sozdat-klassnuyu-sredu-dlya-razrabotchikov---vzglyad-aurora-foundation</link>
      <comments>https://tproger.ru/articles/kak-sozdat-klassnuyu-sredu-dlya-razrabotchikov---vzglyad-aurora-foundation?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Сергей Лалетин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-sozdat-klassnuyu-sredu-dlya-razrabotchikov---vzglyad-aurora-foundation</guid>
      <description><![CDATA[<p>Мы создаём новую среду разработки приложений для ОС Аврора и не только. При этом стараемся сделать её интуитивно понятной, без необходимости вручную настраивать окружение и гуглить каждый шаг. Рассказали, что уже есть и что планируем добавить.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-sozdat-klassnuyu-sredu-dlya-razrabotchikov---vzglyad-aurora-foundation">Как создать классную среду для разработчиков — взгляд Aurora Foundation</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Мобильная разработка]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 06 Jun 2024 11:32:17 GMT</pubDate>
      <content:encoded><![CDATA[<p>ОС Аврора — российская мобильная операционная система. Её начали разрабатывать в 2016 году, сейчас выходит уже пятая версия, есть своё комьюнити разработчиков, появляются приложения. В общем и целом платформа развивается.</p><p>Конечно, её сравнивают и будут сравнивать с гигантами вроде Android и iOS. Поэтому она должна быть качественной и вполне конкурентоспособной, и одновременно самобытной и по-своему прорывной.</p><p>Нам хотелось бы привлечь больше разработчиков, создать больше приложений, сформировать свою экосистему сервисов и ширить базу преданных пользователей. И мы создали Aurora Foundation. Проект уже начал объединять разработчиков ОС, приложений и сервисов, производителей устройств. В статье расскажем, что уже готово и что планируем делать в будущем.</p><h2>Взять хорошую универсальную основу</h2><p>Сейчас многие популярные инструменты стали официально недоступны. Любимые многими продукты JetBrains не купить в России, какие-то ресурсы порой доступны только через VPN. Мы делаем IDE для Flutter, так что, очевидно, доступна ещё <a href="https://developer.android.com/studio">Android Studio</a>. Но это всё же нишевый инструмент, который нет смысла брать за основу универсального продукта.</p><p>Есть и альтернативные пути. При желании <a href="https://youtu.be/E29ij9baGPw?si=w48xmPsySrMKqbW1">можно и Neovim заточить под Flutter</a> (хотя вряд ли найдётся много охотников таким образом работать) или посмотреть в сторону развивающихся опенсорсных проектов вроде подающего надежды <a href="https://zed.dev/">Zed </a>от создателей Atom. Но на длинной дистанции это не кажется удобными или надёжными.</p><p>По большому счёту, из мощных универсальных инструментов в свободном доступе остался лишь <a href="https://code.visualstudio.com/">VS Code</a> — по статистике им пользуется примерно треть разработчиков. Но не все его плагины полноценно работают в России, особенно сопряжённые с зарубежными облачными сервисами.</p><p>Так что мы взяли его опенсорсную версию Code OSS в качестве основы и начали писать свою IDE для российского комьюнити разработчиков под основные платформы (Linux, Windows, macOS на x86 и ARM). <a href="https://github.com/microsoft/vscode/blob/main/LICENSE.txt">Лицензия MIT</a>, убедительная история разных форков и способность работать как серверное веб-приложение без локальной установки стали дополнительными аргументами.</p><p><a href="https://idx.dev/">Project IDX</a> — анонсированная новая среда разработки от Google тоже основана на Code OSS.</p><figure><img src="https://media.tproger.ru/user-uploads/100503/2024-06-06/d5ca1441-38b2-4ad3-981d-bbd430396743.png" alt="" /><figcaption>Начало работы с Aurora Studio</figcaption></figure><h2>Максимально упростить работу</h2><p>У Авроры давным-давно есть свои SDK, но процесс установки непростой. Нужно либо уже знать, как система устроена, либо лезть в документацию и идти по инструкции. А давайте честно, мало кто любит инструкции, и большинство сперва подходит интуитивно, обращаясь к документации, уже когда интуитивно не получилось.</p><figure><img src="https://media.tproger.ru/user-uploads/100503/2024-05-16/58f53495-169f-46be-9856-db461fbd4650.png" alt="Dart и Flutter в Aurora Studio" /><figcaption>Dart и Flutter в Aurora Studio</figcaption></figure><p>Мы хотим убрать этот барьер и сделать процесс проще, чтобы даже новичок, который только-только окончил курс «Введение в программирование», смог установить и настроить IDE под себя, И затем быстро собрал работающее приложение с помощью шаблонов и преднастроенных тулчейнов сборки.</p><p>Поэтому делаем так, чтобы всё окружение и инструменты сами устанавливались и настраивались «по клику», а всё остальное автоматически доезжало по мере необходимости. Ну и конечно же используем контейнеры, чтобы создание сред отладки и сборки было наименее «инвазивным» для компьютера разработчика, и в перспективе появилась возможность запускать среды и на серверной стороне в облаке.</p><blockquote>Продуманный Developer Experience — ключ к успеху любой платформы, будь то операционная система или просто фреймворк для прикладной разработки. И мы стараемся позаботиться в том числе о начинающих разработчиках и сделать опыт работы с Авророй для них приятным открытием</blockquote><h2>Добавить эмулятор и совместимость с другими операционками</h2><p>Чтобы протестировать приложение на Авроре, нужен телефон или планшет на Авроре. А их сейчас не всегда легко достать на рынке — особенно если вы группа разработчиков и хотите парк устройств. К тому же не всегда удобно физически подключать телефон к ПК или ноутбуку, чтобы отлаживать и тестировать разрабатываемое приложение.</p><p>Поэтому нужен эмулятор устройства с Авророй. В <a href="https://developer.auroraos.ru/doc/software_development/sdk">классическом Aurora SDK</a> уже есть такой, на базе виртуалок. А в Aurora Studio мы реализуем контейнеры с разными таргетами сборки ОС и эмулятором на базе QEMU. По задумке, его можно будет виртуально запускать и отлаживать приложения на основных архитектурах и форматах устройств локально или в облаке.</p><p>Взяв на вооружение Flutter, можно собирать приложения сразу для Авроры, Android и iOS. И почему бы не задаться целью сделать подход Aurora first — когда вместо портирования на Аврору приложений, изначально разработанных под другие платформы, мы сразу пишем софт под Аврору и параллельно собираем для других платформ. Думаю, такой подход поможет Авроре стать у российских разработчиков куда более популярной мобильной ОС.</p><h2>Добавить облака</h2><p>Облака — это тренд рынка по нескольким причинам.</p><ul><li>Отладка с тестированием становятся настолько ресурсоёмкими и комплексными процессами, что разумно выносить эти операции с компьютера разработчика на внешние мощности, в том числе облачные.</li><li>Да и благодаря многообразию операционных систем, устройств и архитектур (x86 и ARM, RISC-V и MIPS, скорее всего, перестанут быть экзотикой <a href="https://habr.com/ru/companies/macloud/articles/566478/">Эльбрусы</a> и <a href="https://habr.com/ru/companies/selectel/articles/552152/">LoongArch</a> и так далее), приходится учиться жонглировать всё более сложными средами разработки и заниматься созданием и поддержкой собственных стендов в железе.</li><li>Стандартом индустрии становятся IDE, усиленные облачными средствами сборки, запуска, отладки, тестирования и всевозможного анализа кода, а также публикации релизов на площадках дистрибуции. У Apple эти задачи решает <a href="https://developer.apple.com/xcode-cloud/">Xcode Cloud</a>, у Google — недавно стартовавший <a href="https://idx.dev/">Project IDX</a>. Подобная история есть, разумеется, и у Microsoft, причём сразу в нескольких местах – на <a href="https://vscode.dev/">vscode.dev</a>, на <a href="https://github.dev/">github.dev</a> и в Azure.</li><li>В IDE прорастает направление ИИ-ассистентов для программирования, базирующихся на соответствующих облачных сервисах.</li><li>Растёт актуальность нового класса облачных услуг — <a href="https://www.youtube.com/watch?v=_9qnpRGSWUs">Environment-as-a-Service</a> (EaaS, «среда как сервис»).  <br /></li></ul><p>Это, кстати, ещё один аргумент в пользу Code OSS и его способности работать и десктопно, и в браузере. С таким фундаментом переход к нашей собственной EaaS-платформе станет абсолютно бесшовным.</p><h2>Гарантировать безопасность</h2><p>Мы уделяем особое внимание их безопасности, и разработчикам приложений также стоит о ней думать — в частности при взаимодействии с внешними службами.</p><p>Но безопасное кодирование — непростая дисциплина, особенно для новичков, потому что надо:</p><ul><li>овладеть принципами и подходами «безопасного кода»;</li><li>освоить инструменты для своевременного выявления потенциальных уязвимостей;</li><li>разобраться во множестве неочевидных технических нюансов, определяющих безопасную работу ПО;</li><li>изучить требования закона к системам, которые затрагивают персональные данные и идентификацию пользователей, их платёжные средства или физиологические показатели;</li><li>понимать требования закона к системам, которые обслуживают критическую инфраструктуру.</li></ul><p>Крупные компании, онлайн-школы и технологические вузы даже запускают курсы по этой теме, поскольку эти компетенции становятся гигиеной в современном мире.</p><p>Это же просто нескончаемая эпопея с тем, как гиганты вроде Microsoft и их пользователи страдают от дыр в системах: взломы, сливы данных, скандалы. Конечно, сделать софт на 100% безопасным крайне сложно, но тем не менее инструментально обеспечить приличную долю неуязвимости можно.</p><p>Мы же мечтаем сделать безопасную разработку доступнее на уровне IDE. В идеале — чтобы разработчикам любого уровня и понимания темы было сложнее совершать ошибки. Для нас самих это станет дополнительной гарантией того, что в софте будет минимум уязвимостей. Что можно реализовать:</p><ul><li>указывать, что в написанном коде есть небезопасные конструкции, и подсвечивать их (для этого уже есть инструменты, которые нужно интегрировать в IDE);</li><li>автоматически находить дыры и вредоносный код в опенсорсных пакетах, которые использует разработчик (и в их транзитивных зависимостях), прямо на это указывать и советовать использовать другую версию такого пакета или какие-то другие аналоги (у нашего «РТК-Феникс» уже выстроен очень хороший пайплайн, советую<a href="https://www.company.rt.ru/press/news/d467492/"> зайти и почитать</a>);</li><li>предлагать готовые шаблоны безопасной реализации типовых прикладных конструкций.</li></ul><p>Реализовать это всё в упомянутой ранее концепции EaaS — самая разумная стратегия.</p><p>У меня есть сверхзадача — достичь такого уровня зрелости инструментов нашей IDE, который бы позволил буквально гарантировать разработчику: он создаст код, соответствующий всем необходимым требованиям безопасности и лицензионной чистоты. Звучит фантастически, но мы работаем в этом ключе.</p><h2>Всесторонне развивать экосистему</h2><p>Недостаточно просто сделать IDE и ждать, когда к нам придут разработчики — нужно развивать всю экосистему платформы, включая глобальные службы, необходимые приложениям.</p><p>Сейчас на Аврору постепенно добавляются новые приложения и <a href="https://t.me/aurora_devs">растёт сообщество</a> (там уже собрались классные и очень открытые специалисты — заходите). И что важно, мы развиваем экосистему базовых общедоступных сервисов. Среди которых долгожданная глобальная служба пушей, доверенные сервисы точного времени и DNS, проверка интернет-соединения и другие фичи, важные для любой мобильной платформы.</p><p>Из особо интересного: мы решили сделать службу синхронизации пользовательских данных между устройствами и развиваем довольно необычную концепцию сервисной агрегации. Она позволит добавить клиентские сервисы в Аврору не в виде приложений, а через интеграцию данных в одно из специальных типовых приложений платформы. В планах сделать такие приложения для нескольких областей — общение через различные текстовые и голосовые средства коммуникации, личная продуктивность, финансы, файловые хранилища, навигация и прочее.</p><p>Представим, что у вас пять банковских приложений, и вы перешли на Аврору. Чтобы не скачивать всё заново и потенциально не мучиться с иконками веб-версий, можно просто использовать предустановленный сервис, назовем его «Финансы», где будут данные из всех банков. Примером подобной концепции является многим хорошо знакомый Apple Wallet.</p><p>Разумеется, шаблоны работы со всеми сервисами этой экосистемы сразу интегрируем в Aurora Studio. И обеспечим автоматическую публикацию их релизов в <a href="https://www.rustore.ru/">RuStore</a> и приватных корпоративных Аврора Маркетах.</p><blockquote>Развитие Авроры сейчас находится на таком этапе, когда двигаться дальше без экосистемы средств разработки и общедоступных базовых сервисов будет всё сложнее. При этом создание и развитие экосистем задача непростая, и по плечу она, пожалуй, только сообществу крупных игроков, заинтересованных в win-win. Поэтому если не мы, то кто может быть драйвером этого развития?</blockquote><h2>Что осталось сказать</h2><p>У нас огромные планы — осталось всё это сделать. Сейчас у нас уже есть первые сборки среды разработки Aurora Studio, которые можно <a href="https://aurora.rt.ru/#download">скачать и пощупать</a>. Пока там нет всех фич, про которые рассказали в статье, но мы в процессе их реализации. И приглашаем вас протестировать альфа-версию нашей IDE.</p><p>Впрочем, это только начало, и мы не хотели бы интегрировать поддержку других фреймворков и инструментов, сформировать среду для fullstack-разработки — с поправкой на условия, в которых работают российские разработчики, и наши представления об идеальной IDE, сопутствующих сервисах и судьбе сообщества в целом.</p><p>Пишите в комментариях, на что вы обращаете внимание в среде разработки и что хотели бы видеть в IDE.</p><h3>И бонусом несколько полезных ссылок</h3><ul><li><a href="https://t.me/aurora_devs">Живое сообщество в Telegram</a></li><li><a href="https://developer.auroraos.ru/">Официальная документация для разработчиков от</a><a href="https://www.youtube.com/@AuroraOS/videos"> Открытой мобильной платформы</a></li><li><a href="https://gitlab.com/omprussia">Официальная библиотека на GitLab</a></li><li><a href="https://www.youtube.com/@AuroraOS/videos">YouTube-канал Открытой мобильной платформы, где выходят новости и обзоры</a></li><li><a href="https://developer.auroraos.ru/">Портал разработчиков</a></li><li><a href="https://gitlab.com/omprussia/edu">Учебный курс на GitLab по работе в Qt</a></li><li><a href="https://stepik.org/course/71788/info">Бесплатный курс на Stepik</a></li><li><a href="https://otus.ru/lessons/qt-aurora/">Платный курс на Otus</a></li><li><b><a href="https://www.infosystems.ru/courses/avtorizovannye_kursy/ISSF010/">Очный курс в Академии Информационных систем</a></b><br /></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Линукс против новичков: разбираемся с драйверами</title>
      <link>https://tproger.ru/articles/linuks-protiv-novichkov--razbiraemsya-s-drajverami</link>
      <comments>https://tproger.ru/articles/linuks-protiv-novichkov--razbiraemsya-s-drajverami?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Ирина Тюльпакова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/linuks-protiv-novichkov--razbiraemsya-s-drajverami</guid>
      <description><![CDATA[<p>Рассказываем, почему проблема драйверов в Линуксе  — всё ещё актуальная вещь, в какой момент может всё сломаться и что делать, если драйвер в Линуксе не работает.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/linuks-protiv-novichkov--razbiraemsya-s-drajverami">Линукс против новичков: разбираемся с драйверами</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[unix]]></category>
      <category><![CDATA[NVIDIA]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 09 Apr 2024 09:30:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Старожилы, которые работали с Unix-системами лет 10-15 назад, помнят, как часто на форумах возникали вопросы «как скачать драйвер для linux» или «не работает аудиовыход — как починить». Сейчас, пусть и реже, какой-нибудь драйвер нет-нет, да и отвалится. Основных причин, почему такое возникает, две:</p><ol><li>Все драйверы содержатся в ядре системы. Обновляется дистрибутив — ядро пересобирается, обновляются или удаляются старые драйверы, и устройство, прекрасно работающее долгие годы, просто «отваливается».</li><li>Политика некоторых дистрибутивов достаточно жесткая: например, в ядре содержатся только драйвера со свободной лицензией. Поэтому с компонентами от AMD и Intel проблем не возникает, а вот для того, чтобы настроить видеокарту от NVidia, нужно заморочиться.</li></ol><p>С мышками, клавиатурами и прочими мелочами, как правило, бед не случается. Управление этими устройствами происходит через стандартные интерфейсы. Туда же можно отнести флэш-накопители, устройства NVMe и даже контроллеры USB и SATA — для них нет специфичных Linux драйверов. Что нельзя сказать про wifi-адаптер: для каждого придётся вручную подбирать необходимое ПО.</p><p><a href="https://tproger.ru/articles/v-chyom-linux-luchwe-windows">https://tproger.ru/articles/v-chyom-linux-luchwe-windows</a></p><h2>А это нормально, что ядро Линукса так сильно раздуто драйверами?</h2><p>Да, всё окей. Большая часть кода драйверов в ядре была хорошо абстрагирована, поэтому добавление другого устройства может означать добавление всего нескольких строк кода.  В Linux драйверы могут занимать не более нескольких десятков кБ для правильной работы контроллера.</p><p>Для примера, около 380 драйверов будут весить столько же, сколько .txt-файл с первым томом «Войны и мира», или как трехминутный качественный mp3-трек. При этом Unix-системы оставляют возможность перекомпилировать ядро, избавиться от ненужных модулей и сократить его вес почти в 10 раз. Но мы настоятельно не рекомендуем заниматься этим на рабочих машинах, особенно если о такой возможности вы только что узнали.</p><p>К тому же, образ Windows тоже содержит огромное количество предустановленных драйверов. Например, для того, чтобы live usb корректно работал на любой машине.</p><h2>Что не стоит делать в Linux с драйверами</h2><p>Последнее, к чему советуют прибегать — это скачивать драйверы с сайтов-производителей и вручную запускать их в Unix-системе. На это есть ряд причин, рассмотрим на примере установки драйверов NVidia в Linux:</p><ul><li>драйвер может перезаписать библиотеку с графическим интерфейсом Mesa GL, из-за чего перестанет работать открытый драйвер (если вы работаете со встроенной AMD и дискретной NVidia-картой, то система при обновлении не сможет распознать даже AMD);</li><li>установленный с сайта драйвер не обновится с ядром, его нужно будет переустанавливать вручную;</li><li>в случае, если у вас отвалятся оба драйвера, придётся накатывать обновления через CLI (терминал).</li></ul><p>Так что в Linux драйверы видеокарты лучше ставить более изящным способом, через добавления в систему репозитория.</p><h2>Что делать, если что-то не работает в Линукс?</h2><h3>1. Воспользуйтесь встроенным ПО</h3><p>В Линуксе нет привычного для Windows-пользователей диспетчера устройств. Но можно воспользоваться аналогами, например, «<a href="https://askubuntu.com/questions/47506/how-do-i-install-additional-drivers">Additional driver</a>» в Ubunta или <a href="https://help.gnome.org/users/gnome-packagekit/stable/add-remove.html.en">менеджером пакетов для GNOME</a> в других дистрибутивах. На крайний случай скачать утилиту <a href="https://github.com/Nokse22/inspector">Inspector</a>.</p><h3>Посмотрите, какие драйверы уже установлены</h3><p>Прежде чем устанавливать драйвер, не лишним будет проверить, находится ли он в системе вообще. В первую очередь проверьте список устройств, распознанных системой — это можно сделать вручную через терминал. Кстати, мы писали уже про <a href="https://tproger.ru/articles/100-komand-linux-dlya-ezhednevnoj-raboty">полезные команды в Linux</a>.</p><p>Если у вас есть название драйвера — то можно воспользоваться командой grep (она помогает фильтровать вывод по ключевому слову).</p><p>Например, вы можете ввести lspci | grep NVIDIA, если хотите узнать, установлен ли драйвер NVidia.</p><p>Дальше можно посмотреть драйверы устройств, которые были распознаны ядром:</p><p>или, по аналогии,</p><p>Если команды dmesg  или lscpi вывели нужный вам драйвер, значит, проблема не в нём. А вот если они ничего не дали, значит, драйвер не установлен или не распознаётся. Тут нужно проверить, есть ли драйвер в файловой системе:</p><p>и</p><p>Тут тоже можно использовать | grep SOME_DRIVER_KEYWORD. Если драйвер распознается этими командами, но не lscpi или dmesg, это означает, что драйвер находится на диске, но не в ядре. В этом случае загрузите модуль с помощью команды modprobe:</p><h3>Обратитесь к wiki</h3><p>Если вам нужны проприетарные драйверы, перейдите в документацию вашего дистрибутива или на специальную wiki и найдите, для чего вам нужны драйверы (например, для "nvidia"). Скорее всего, правильному способу это сделать будет посвящена целая страница. Вот для примера <a href="https://wiki.astralinux.ru/pages/viewpage.action?pageId=158610328">вики по Astra Linux и установке NVidia-драйверов</a>.</p><p><a href="https://tproger.ru/books/linux">https://tproger.ru/books/linux</a></p><h2>Заключение</h2><p>Проблема с драйверами в Линуксе достаточно масштабная: при очередном обновление ядра устройства могут внезапно выйти из строя, начать греться или наоборот, лучше работать. Хорошая новость заключается в том, что по каждому популярному оборудованию можно найти репозитории с проприетарными драйверами, а также пошаговую инструкцию, как их накатить. Если вы всё же нацелены перейти на Linux и хотите выбрать хороший дистрибутив, то <a href="https://tproger.ru/digest/vybiraem-distributiv-linux-dlja-novichka">наш материал</a> может помочь.</p>]]></content:encoded>
    </item>
    <item>
      <title>Библиотека программиста: 37 книг для того, чтобы разобраться в IT</title>
      <link>https://tproger.ru/articles/knigi-po-programmirovaniyu</link>
      <comments>https://tproger.ru/articles/knigi-po-programmirovaniyu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Ирина Тюльпакова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/knigi-po-programmirovaniyu</guid>
      <description><![CDATA[<p>Подборка из 37 книг по программированию от Winderton: Computer Science, алгоритмы, Python, C++, Java, C#, JavaScript. Узнайте, с чего начать в IT.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/knigi-po-programmirovaniyu">Библиотека программиста: 37 книг для того, чтобы разобраться в IT</a>»</p>]]></description>
      <category><![CDATA[Алгоритмы и структуры данных]]></category>
      <category><![CDATA[JavaScript]]></category>
      <category><![CDATA[Java]]></category>
      <category><![CDATA[C++]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[C#]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[unix]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Фронтенд-разработка с нуля]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 29 Mar 2024 13:50:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Два года назад IT-блогер Winderton опубликовал собственную подборку из книг про программирование. Его библиотека включает как базовые книги по алгоритмике и основам компьютерных наук, так и более конкретные, посвященные языкам. Несмотря на то, что к 2024 году некоторые книги получили переиздание, список всё так же можно назвать мощной подготовительной базой для начинающего специалиста.</p><p>Ниже — транскрибация ролика, дополненная ссылками.</p><p>Шесть лет назад я,
Виндертон, будучи в состоянии аффекта,
выкладываю вот этот вот ролик, который
посмотрело уже больше 100 тысяч человек: «Техническая литература для программистов».
Чтобы сэкономить вам 10 минут вашего
времени, там были показаны вот эти вот
книги.</p><figure><img src="https://media.tproger.ru/user-uploads/88534/2024-03-29/f07dfe38-506e-480f-b7c7-2f70bdd6fb46.png" alt="" /></figure><p>Вопросов нет. Кнут — это классный автор
с крутыми материалами. На кто его
потянется со всей этой математикой, если даже
вот эти челы не тянут, а конкретно тот,
что с бородой — Шон Магресс. Тадембаум —
та же самая история. Классный материал,
но настолько сложное задание, что порой
вгоняет в депрессию. Корман заставляет
писать вас вообще деревья с нуля без
примеров.</p><p>Поэтому, если вы хотите освоить основу
программирования, влиться в компьютер-сайенс,
или вам просто нужны хорошие книжки по
программированию, то за следующие
несколько минут я на вас вывалю все
то, что есть на 2022 год, дам по каждой
комментарии, рекомендации и антирекомендации.
Грубо говоря, мы сейчас сделаем с вами
выборку.</p><p>Ну а мы разбиваем видео на три части:</p><ol><li>Введение в программирование и ядро computer science.</li><li>Моя библиотека. GameDev, прочее.</li><li>Языки программирования.</li></ol><h2>Введение и основы computer science</h2><p>«Внутри машины», или как работает ваш
компьютер, у нас это называется еще «архитектура ЭВМ». Как устроен процессор,
память и вся организация железа. Если
у вас нулевой бэкграунд, вам нравятся
картинки и тоненькие книжки (~300 страниц), то это то,
с чего вам точно стоит начать.</p><p>«Введение в компьютерные системы». Тут
автор начинает буквально с того, почему
процессор делается из кремния, потому
что они сами делали процессоры из
кремния. И проходится по всему
абстракционному стеку, начиная от
железа, через периферию, BIOS, операционную
систему, ассемблер, язык программирования
C, пишут на нем потом программы и покажут,
как это дело все между собой связано,
взаимодействует в очень интерактивной
манере.</p><p>«Код» Петцольда. Эта книга, как и
первая, тоже для полных новичков, без
бэкграунда в сфере. Там рассказывается
про то, что такое железо, операционная
система, компиляторы, языки программирования,
как это дело все между собой взаимодействует.
Если вам когда-нибудь было интересно,
почему компьютер именно такой, а программы
пишутся именно так, то Петцольд в очень
простой манере за 400 страниц вам об этом
простенько расскажет.</p><p>Если вдруг по каким-то причинам вы эти
книги не найдете или вам их будет мало,
то вот еще две.</p><p>Первое — это «Теоретический
минимум по Computer Science». Уровень подачи тут
не дотягивает до предыдущих трёх, он
немножко мудрёнее и сложнее, но тут
реально покрывается весь тот компьютер-сайенс необходимый, который вам нужен, и
в книге всего 150-200 страниц.</p><p>Единственный
минус, который связан у меня с этой
книгой — она вся развалилась пока я её читал.</p><p>«Computer Science: an Overview». Эта книга реально местами
довольно часто очень сложная. То есть,
если вы не знаете, что такое транзистор,
а там об этом узнаете, то вы вряд ли
поймете, что такое транзистор.</p><p>Но, (а) эта
книга реально походится по всему курсу
Computer Science, где говорят даже про базы
данных и графику, и, (б) там копают чуть
глубже, чем в этой, этой или этой. Поэтому,
если у вас есть хоть немного опыта
программирования, то смело берите эту
книгу и изучите Computer Science.</p><h3>Алгоритмы и структуры данных</h3><p>Как вы все
знаете, это Корман и Седжик.</p><p>Но Корман — это очень много математики
прямо с первых страниц, а Седжик — это
Java, которая, ну, не особо всем нравится.</p><p>Но нам везет, и со временем появляются
реально годные альтернативы. И одна из
них — это Grokking Algorithms. Я о ней узнал
года три назад, и года два назад полностью
заменил ею Кормана в менторинге. Книгу написал очередной гений, который
программирует с двух лет и продает свои
первые игры чуть ли не в 10 лет. Но она
реально написана простым языком, и хочу
сделать небольшую ремарку, если будете
читать перевод. В переводах есть ошибки,
поэтому просто будьте осторожны и всегда
рекомендую только оригинал.</p><h3>Операционные системы</h3><p>Для меня
это был и остается Томас Андерсон с вот
этой вот книжкой, потому что книги
Тененбаума более сухие, наверное, и выше
по уровню сложности. Поэтому, если вы
понимаете, что написано в этой книге,
можете перейти к Тененбауму, но не Вайзверсу.</p><p>Тут, наверное, есть какой-то
баланс, она не слишком глубокая и не
слишком поверхностная.</p><p>Также мне нравится
вот эта книжка, она супер просроченная,
я давным-давно ее купил, но если вы хотите
знать, как работает Unix, и вам нужен
туториал, как написать свой Unix, то это
как раз-таки то, и не важно, что ей 200 с
лишним лет.</p><h3>Компиляторы и дизайн языков</h3><p>Книгу с драконом сразу отсюда
убираем, потому что она, ну, прям
слишком сложная.</p><p>Берем сюда Николаса Вирза, 150 страниц,
и добавляем сюда Нистерна с его Crafting
Interpreters. Кстати, Нистерн — это тот самый
чел, который делал паттерны для геймдева,
которые являются чуть ли не аналогом
Банды Четырех.</p><h3>Software development</h3><p>Clean Code, Code Complete и так далее — ребят, это классные книги,
не поймите меня неправильно, они написаны
лучшими из нас, но читать их нужно только
тогда, когда вы имеете уже от двух до
трех лет опыта в программировании. Они
учат вас, как делать правильно, и вы,
скорее всего, не поймете, как делать
правильно, если вы сначала не поделаете
неправильно. Тут нереально учиться на
чужих ошибках. Рекомендую читать только
тогда, когда у вас будет пару пэт-проектов
и два-три года опыта в программировании
в целом.</p><p>Касаемо ООП, все советуют «Банду
Четырёх», которая прилично так всем уже
надоела.</p><p>А я посоветую вам вот эту книгу,
которая, на мой взгляд, будет лучше. Единственный момент, то, что там С++, но
его там на самом деле почти нет. Не
пугайтесь.</p><h2>Моя библиотека, GameDev, прочее</h2><p>Джейсон Грегори — это автор,
который написал Uncharted и, соответственно,
эту книгу. У него супер-обширные познания
в игровых движках как минимум и как
максимум в производстве игр. В моменте
этот человек решает написать вот эту
вот книгу, которая уже третье издание.
Отличная подача материала, углубление
в самый раз, максимально широченный
охват тем. И вот, например, то, что делает тот же
самый Ян Черников — это процентов 20-30
вот от этой вот как раз книги. Чаще всего
я читаю именно её.</p><p>Опять же, Андерсон «Операционки». Тут лучшее объяснение
виртуальной памяти, на мой взгляд. Книга
по введению в CS и программирование.
Просто всем советую. Конечно же, Корман
со своей бандой. Они тут явно борщат с
математикой, но, может быть, это просто
я тупой [здесь не даются ссылки на книги т.к. автор повторяет их из первого раздела, — прим.редактора].</p><p>Не особо классная книга по C++,
но как референс или подставка для
монитора вполне сходит.</p><p>Ещё одна классная книга — это Game Coding
Complete. Сложные темы рассказывают достаточно
простым языком. И именно отсюда я узнал,
что такое анимация и как они работают.</p><p>Конечно же «Си» Кернигана и Ричи, но я не
советую, если у вас с психикой не все в
порядке.</p><p>Ассембль от Apress, чтобы
хоть какое-то понимание было, что это
такое, как на него смотреть вообще&lt;...&gt;</p><h2>Языки программирования</h2><h3>Python</h3><p>Тут идёт, конечно же, Лутц с его громким именем. Книжка прям для
суперновичков, и Лутц, самое главное, не
страдает болезнью. Вот это вы пока не
понимаете, но через 10 страниц я вам это
объясню. Нет, он как в бакалее: всё сразу
по полочкам вам раскладывает, и вы
перелистываете страницу за страницей,
с приятным чувством, что вы все понимаете,
вы весь такой вообще умный и сообразительный.</p><p>Еще одна книга на уровне этой — «Краш-курс Питона», которая была написана
тоже автором, у которого куча классных
книг по питону. Он программирует с 5 лет
и пишет полжизни книги. Отличие от Лутца в том, что эта книга
подходит как и начинающим, так и типам
с опытом, поэтому читать ее реально не
скучно.</p><p>Еще одна классная книга и классный
автор — это Дэвид Бизли с его «Python
Cookbook». Вообще, Дэвид Бизли — это бывший
С-шник, который полжизни пишет на C и
в моменте решает преподавать Python. И
расскажет про всякие супер интересные
и занимательные штуки по типу, почему
на Python нельзя программировать многопоточные
приложения, почему на нем нельзя
программировать мобильные приложения.
И у него еще есть всякие видео на YouTube,
где он показывает всякие хаки с Python.
Поэтому Python Cookbook, если уже знаете основу,
то там вас научат расширять даже
питоновский интерпретатор.</p><h3>C</h3><p>Тут сразу запомните одно. Никогда не
читайте книгу Learn C the Hard Way, потому что
там автор сразу видно, что не знает, о
чем говорит, и упрощает то, что упрощать
не надо. У этой книги прям очень много
хейта в интернете, как и у книг Шилта,
который классно знает Java, но не знает
C++ и C, или как минимум не умеет их
преподавать.</p><p>Волк в овечьей шкуре или
Брайан Керниган и Денис Ричи и C, второе
издание. Книгу рекомендуют до сих пор
изучать по C, но на самом деле там есть
куча проблем. Во-первых, это то, что эта
книга подразумевает то, что вы уже знаете
компьютер-сайенс, как работает вообще
все, начиная от железа и вплоть до
операционных систем. Во-вторых, то, что
она по факту страниц 250, хотел сказать,
она по факту 2500, и там нет такого понятия,
как best practices, то есть книги 100 лет, и там
просто не знали, что такое хорошо, а что
такое плохо. Поэтому не рекомендую, если
вы не понимаете компьютер-сайенс.</p><p>Beginning C. Книга от Apress, которая, как вы
видели, у меня уже есть x86 Assembly. Классная
книга, классное издательство. Фишка
этой книги то, что там рассказывают про
C99, про C11, про многопоточность в C.</p><p>Эта книга
отлично работает как туториал, как
референс, как подставка. И там много
всяких работающих маленьких программулек
на C.</p><p>И напоследок, хочу скачать что мне запомнилась,
вот эта книга, которая называется Expert
C. Она была написана челами, которые
классно знают и разбираются в
интерпретаторах и работают в САН.</p><h3>C++</h3><p>Конкретно от меня, у меня Primer Plus, которая
не лучшая из этих книг, но мне хватило
ее как референса [автор упоминал её ранее, — прим.редактора].</p><p>Мне также очень нравятся
книги Скотта Майер Effective C++, которые
нравятся вообще всем.</p><p>Плюс я почитываю
вот эти вот две книги по метапрограммированию,
не самые хорошие, но выбора просто нет
никакого.</p><p>Само собой, многопоточность и C++
Concurrency in Action, потому что также нет никакого
выбора. Ну и само собой, Александр Эску,
которого почитывать нужно как минимум
для того, чтобы видеть, как делать не
надо, а это всегда в C++ интересно
посмотреть.</p><h3>Java</h3><p>Джава за
один день, всем советую, конечно же,
шучу, это полная фигня. Всегда избегайте
этих книг, каких бы отзывов вы там не
видели, потому что это чушь собачья, а
не книги. Простите, авторы.</p><p>А вот книга Шилда Java Complete Reference,
последний, который я читал, шестой и
седьмой, мне всегда нравились, потому
что простая подача, и они очень похожи
на GLS. Наверное, даже проще. Да и вообще,
у Шилда читать, мне кажется, можно всё,
что угодно, потому что он как бы папа джавы.</p><p>Конечно же, как только вы знаете
джаву-основу, это Джошуа Блок с ее Effective Java, это аналог Скотта Майера с Effective C++. На моей первой работе на Java, когда я
пришел и сказал своему тимлиду, что я
читаю Effective Java, он мне говорит, блин, это
классная книга, я там дженерики сейчас
изучаю. А я стоял в этот момент и думал,
что, блин, я ее тоже уже читаю. Было очень
приятное чувство, но меня тогда, типа,
я так и остался работать джуном, а он
так и остался работать тимлидом. Ничего
не поменялось. В этой книге реально
много практик использования джава в
реальном продакшене, поэтому, если
знаете основу, смело ее рекомендую.</p><p>Java Concurrency in Practice. То есть Java — это
исключение, это многопоточность, это
OOП. Такие книги, как Java Concurrency in Practice,
показывают вам, как использовать ту же
самую многопоточность, ее неотъемлемую
часть. А такие книги, как Хедферст или
какой-нибудь Шилдт, показывают вам, что
такое Java Core. Также на уровне с Шилдтом есть тип, которого зовут Кей Хорсман. У
него много всяких книг по типу «Как
работать с синхронизацией» или «Ближележащие топики». То есть какой-то Advanced
Java. Поэтому советую присмотреться тоже.</p><h3>C#</h3><p>Пусть Рихтера читают, пусть больше
ничего не читают.</p><h3>Javascript</h3><p>Симпсон «Вы не знаете
JavaScript». Неоднократно слышал про эти книги
от классных JS-ников, потому что там много
всяких how-to, то есть как работает это,
как работает это, почему не работает
это.</p><p>Советовать
Фленнегана или Дугласа Кроуфорда,
который хотел назвать JavaScript C++++ я не
буду, потому что, если бы вы хотели читать
книги, вы бы, наверное, изучали C++. Все-таки JavaScript — это попробовать,
потыкать и поучиться на практике.</p><h3>Assembly</h3><p>Я
покупал себе вот эту книгу и ни разу в
ней не разочаровался. Возможно, потому
что я прочитал ее только процентов на
30, но какая разница. Наверное, будет
хороший вопрос, если вы скажете, зачем
мне вообще ассембли в 2022 году. Да, он вам
не нужен, вы на нем писать ничего точно
не будете, но если вы пишете на плюсах,
то чтение ассембли во время дебаггинга,
что занимает большую часть вообще
времени в программировании, как минимум на C++, как минимум у меня,
понимать ассембли хотя бы нужно, поэтому
такая вот книга в этом отлично помогает.</p><p>Еще есть вот такая вот книга, но она прям
суперпростая, поэтому я бы рекомендовал
читать сразу вот эту.</p><p>Читайте также: <a href="https://tproger.ru/articles/kak-stat-programmistom">Как стать программистом с нуля — полный гайд</a>, <a href="https://tproger.ru/articles/backend-2024">Что знать бэкендеру в 2024 году</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>10 плюсов Linux перед Windows, с которыми не поспоришь</title>
      <link>https://tproger.ru/articles/v-chyom-linux-luchwe-windows</link>
      <comments>https://tproger.ru/articles/v-chyom-linux-luchwe-windows?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Рафаил Агазода]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/v-chyom-linux-luchwe-windows</guid>
      <description><![CDATA[<p>Linux vs Windows: 10 реальных преимуществ Linux — безопасность, бесплатные компиляторы, отсутствие вирусов, plug-and-play драйверы. Стоит ли переходить на Linux в 2025?</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/v-chyom-linux-luchwe-windows">10 плюсов Linux перед Windows, с которыми не поспоришь</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 10 Jan 2024 11:10:14 GMT</pubDate>
      <content:encoded><![CDATA[<p>Linux — бесплатная операционная система с открытым исходным кодом, альтернатива Windows для разработчиков, серверов и обычных пользователей. Споры между пользователями Linux и Windows, какая ОС лучше — золотая классика. Попытались разобраться в этой статье, в чём же Linux действительно превосходит Windows, и отобрали факты, с которыми трудно поспорить.</p><p>Linux поставляется с предустановленными компиляторами (C, C++, Python, Go) и git — разработчики могут начать работу сразу после установки без дополнительной настройки.</p><p>Большинство периферийных устройств работают в Linux по принципу plug-and-play — не нужно искать драйверы на сомнительных сайтах.</p><p>Linux практически не подвержен вирусным атакам благодаря архитектуре безопасности и чётким уровням контроля доступа пользователей.</p><p>Система работает годами без перезагрузки: нет принудительных апдейтов, нет раздутого ПО, нет фрагментации реестра.</p><p>Linux — открытый исходный код: любой может проверить, модифицировать и распространять систему без скрытых условий и трекеров.</p><h2>Что смог Linux, но не смог Windows</h2><p>Собрали ряд пунктов, в которых Linux превосходит Windows.</p><h3>Компиляторы уже работают</h3><p>Большинство <a href="https://tproger.ru/articles/distributiv-linux">дистрибутив</a>ов Linux поставляются с предустановленными компиляторами. Если компилятора на борту нет с самого начала, установить их очень просто: достаточно <a href="https://tproger.ru/articles/osnovnye-komandy-linux-v-primerakh">вбить команду в терминале</a>. Часто это касается C, C++ (GNU), Java, Python, Fortran, Golang, Assembly, NodeJS. Кроме того, во многих дистрибутивах уже есть предустановленный git.</p><p>В Windows же компиляторы нужно скачивать отдельно, и это полбеды. На Windows при желании установить компилятор вы обязательно столкнётесь с их нудной и заморочной настройкой и запуском.</p><h3>Поддержка драйверов</h3><p>На Linux почти каждое периферийное устройство подключается по принципу plug-and-play. Вы просто подключаете его и пользуетесь, и для этого вам не нужно загружать целую кучу драйверов.</p><p>На Windows же драйвера придётся поискать, и вы обязательно соскучитесь по тем временам, когда в комплекте к устройству шёл компакт-диск с драйвером. Дай бог, чтобы вам не пришлось попрыгать между сомнительными сайтами и проверить десяток файлов на наличие вирусов.</p><p>Конечно, есть и исключения вроде AMD — линуксоиды знают, что с драйверами к видеокартам бывают проблемы. К примеру, последняя на момент написания статьи версия Ubuntu 23 AMD не поддерживала: автору приходилось откатываться на предыдущую версию ОС. Но это часто зависит от дистрибутива: на Linux Mint не нужно устанавливать драйвер AMD.</p><h3>Кастомизация</h3><p>Надоел текущий рабочий стол? Сделайте новый с помощью одной команды в терминале!</p><p>Не нравится тема? Откройте браузер и выберите новую из миллиарда доступных тем.</p><p>В Linux систему можно настроить всё, как лично вам хочется. Полностью. В частности, попробуйте Compiz, которая позволяет настроить отображение темы без снижения производительности или проблем с ресурсами.</p><h3>Масштабируемость ОС</h3><p>Что касается самой ОС, Linux может масштабироваться. Она работает на 99% из 500 лучших суперкомпьютеров в мире.</p><p>В Linux можно исследовать ПО, модифицировать его, переписывать и распространять с чрезвычайной легкостью под открытой лицензией. Нет никаких хлопот, контрактов, сложных условий и никакого обмана.</p><p>Linux можно адаптировать для новых целей. На Linux можно запустить ваш телевизор, видеомагнитофон, маршрутизатор, вышку сотовой связи, поезда, самолёты, серверы сайтов и так далее. ОС можно использовать где угодно, потому что она свободна, чрезвычайно надежна и предсказуема. Ещё и бесплатная.</p><h3>Забудьте о вирусах</h3><p>Для Linux создано совсем мало антивирусов, но только потому, что они почти не нужны. Дело в том, что большинство вирусов — это исполняемые или пакетные файлы, написанные на VBScript, C или C++, которые не работают с той же эффективностью на Linux, как на Windows.</p><p>Также у Linux есть чёткие уровни безопасности для серверных файлов (в виде контроля доступа пользователей). В том числе, поэтому Linux наиболее предпочтительна для работы на серверах и суперкомпьютерах.</p><h3>Linux для ленивых</h3><p>Вы можете полностью автоматизировать свою систему и заставить её заниматься вашими делами вместо вас. &gt;: ).</p><p>Например, вы можете написать скрипт на Python, который будет читать содержимое почтового ящика, сортировать почту, удалять ненужные письма, отвечать друзьям, и все это за считанные секунды сразу после загрузки ОС. Вы также можете запланировать выполнение действий несколькими приложениями через разные промежутки времени.</p><h3>Установка программ за одну минуту</h3><p>Допустим, вы хотите программировать на C++ с помощью Code::Blocks (IDE). Просто откройте Терминал (Ctrl+Alt+T), введите эту команду и нажмите Enter:</p><p>Вот и всё! Можете начинать писать код. На Windows весь процесс займёт куда больше времени, не говоря уже о хлопотах, связанных с ассоциацией правильного компилятора с нужным ПО.</p><h3>Полная прозрачность процессов</h3><p>В Linux у вас есть полный контроль над  происходящим в системе. Никаких скрытых программ, никакого рекламного и нежелательного ПО, никаких 250 неизвестных фоновых процессов. Ваш компьютер под вашим контролем.</p><p>Кроме того, поскольку у Linux открытый исходный код, вы можете модифицировать любую программу так, чтобы та работала в соответствии с вашими потребностями.</p><p>Linux можно доверять. Он не пытается обмануть вас, не заставляет вас обновлять программы или ставить обязательные заплатки к ОС, принудительно перезапускать систему и так далее. Вы полностью контролируете ситуацию.</p><p>В Linux вообще отсутствуют “черные ходы” и трекеры, потому что процесс разработки происходит открыто, под пристальным вниманием тысяч людей.</p><p>С каждым релизом члены сообщества отслеживают изменения и процесс функционирования ОС в целом.</p><h3>Никаких перезагрузок после установки ПО</h3><p>Может быть, это и не решающий фактор, но упомянуть об этом стоит. В Windows часто приходится перезагружать ОС после установки нового ПО или обновления Windows. С Linux дело обстоит иначе. Почти все обновления или изменения, внесенные в ОС, отражаются в реальном времени без необходимости повторной загрузки.</p><p>Linux может работать годами без перезагрузки. В нем нет фрагментированного реестра и абсолютно отсутствует корпоративное раздутое ПО. Также нет изнурительных проблем с управлением памятью.</p><p>Обновить можно почти любое ПО, включая патчи и незначительные обновления версий ОС, не выключая и не перезапуская машину.</p><h3>Простой доступ к диску Windows</h3><p>Если вы установили Linux и Windows на одно и то же устройство, но на разные диски, вы можете с лёгкостью получить доступ к диску Windows через Linux. Зато в Windows открыть диск Linux не получится без внешних устройств.</p><h2>Что смог Windows, но не смог Linux</h2><p>Тем не менее, у Linux есть несколько пунктов, по которым он проигрывает Windows. К примеру, он не может найти простой способ инициализации программ при запуске, что приводит путанице из-за поддержки нескольких систем инициализации. Однако большинство пользователей об этом не знают.</p><p>Ещё ядро Linux не может выполнять точные функции ядра ОС реального времени, поэтому вы, конечно, можете использовать Linux в качестве ОС для телевизора, но не для космических зондов.</p><p>Многие производители устройств создают драйверы только для Windows. Некоторые устройства, особенно принтеры, может быть трудно или невозможно настроить на Linux-машине.</p><p>Ещё у Linux нет унифицированного внешнего вида, как у Windows. Хотя это и плюс к кастомизации, не существует механизма, препятствующего перенастройке всего подряд, и любой админ может настроить ОС так, чтобы она была визуально и организационно запутанной для других пользователей.</p><p>Также Linux не работает с DirectX от Microsoft, что практически полностью исключает Linux из мира компьютерных игр. API Vulkan пытается изменить ситуацию, преобразовав OpenGL в чистый, современный язык, конкурентоспособный с DirectX.</p><h2>Заключение</h2><p>Итак, Linux выигрывает у Windows в таких областях:</p><ol><li>Поддержка компиляторов</li><li>Кастомизация</li><li>Масштабируемость</li><li>Устойчивость к вирусам</li><li>Поддержка драйверов</li><li>Автоматизация</li><li>Установка программ</li><li>Прозрачность процессов</li><li>Лёгкий доступ к дискам</li><li>Отсутствие принуждения к перезагрузкам, обновлениям и т.д.</li></ol><p>Но Linux проигрывает Windows в следующих областях:</p><ol><li>Инициализация программ</li><li>Ядро точного времени</li><li>Поддержка специфических устройств</li><li>Унификация</li><li>Геймдев</li></ol>]]></content:encoded>
    </item>
    <item>
      <title>Что нужно знать перед тем, как работать с контейнерами</title>
      <link>https://tproger.ru/articles/chto-nuzhno-znat-pered-tem-kak-rabotat-s-kontejnerami</link>
      <comments>https://tproger.ru/articles/chto-nuzhno-znat-pered-tem-kak-rabotat-s-kontejnerami?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Вика Овсянникова]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/chto-nuzhno-znat-pered-tem-kak-rabotat-s-kontejnerami</guid>
      <description><![CDATA[<p>Рассказываем, почему все пользуются технологией контейнеризации и зачем знать про namespaces и системные вызовы при работе с контейнерами.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/chto-nuzhno-znat-pered-tem-kak-rabotat-s-kontejnerami">Что нужно знать перед тем, как работать с контейнерами</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 20 Nov 2023 11:50:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Все умеют работать с контейнерами, но мало кто понимает, как работают они сами. Это ограничивает возможности диагностики и управления программным обеспечением и средствами контейнеризации. DevOps-практики оказываются неэффективными, а безопасность просаживается. Разбираемся, на каких уровнях могут возникнуть ошибки, где можно зайти в тупик и что нужно знать, чтобы этого не произошло.</p><h2>Почему мы пользуемся контейнерами</h2><p>Разработчики пользуются библиотеками. Они позволяют не изобретать велосипед и пользоваться готовыми функциями.</p><p>К сожалению, если появляется новый дистрибутив, подтягиваются и новые библиотеки. Все они поставляются с определенными версиями ОС, и их нужно тестировать в различных средах. А также закрывать уязвимости, делать бэкпорт фич с учетом старых версий библиотек на более ранних дистрибутивах. И учитывать, что в разных дистрибутивах могут различаться стандарты размещения файлов — FHS.</p><p>Чаще всего ресурсов на поддержку такого «зоопарка» нет. Чтобы избежать постоянных тестов совместимости, слой библиотек передается вместе с docker image, из которого разворачивается тот самый контейнер. В нем есть всё необходимое в переносимом виде.</p><h2>Чем технология контейнеризации отличается от виртуализации</h2><p>У операционной системы есть абстракция-посредник между программами и оборудованием — ядро, которое обеспечивает API-вызовы. Происходит это через системные вызовы. Чаще всего они относительно низкоуровневые, надежные и примитивные. Например, «считай 10 байт, открой файл, считай 10 байт». Большинству программ этого достаточно.</p><p>Обратите внимание на эти системные вызовы: с помощью fopen можно смотреть, по какому пути открывается файл, а с clone(fork) и exec — видеть, как идут запуски тредов и внешних программ в контейнере.</p><p>Если, например, приложению приходится работать с аппаратными токенами, то нужны полноценные драйверы. Здесь может понадобиться виртуализация, где гипервизор host-OS позволяет запустить любое ядро с нужными драйверами.</p><p>Получается матрешка. Есть железо, на нем работает программа — ядро. Она создала процесс и запустила в нем гипервизор. Тот создал абстракцию железа, в которой запустилась программа-ядро. Оно создало процесс, в котором запустило программу. Не про это ли думал Нолан, когда снимал «Начало»?</p><p>При контейнеризации мы остаемся на уровне абстракции ядра (на котором запущены контейнеры), и так же отправляем туда системные вызовы. Процесс не знает о файловой системе и компьютере, он получает всю необходимую информацию из ядра.</p><p>Что почитать: «Linux. Системное администрирование», Р. Лав. В книге описаны системные вызовы, происходящие в Linux. Помогает понять, как работает ОС «с пользовательской точки зрения».</p><h2>Что такое namespace</h2><p>Ядро умеет изолировать программы друг от друга через процессы. Между ними изоляция осуществляется благодаря namespaces, которые позволяют отвечать на системные вызовы каждого приложения по-разному. Это как с билетами на концерт: по одному можно пройти на танцпол, по другому — в ложу, по VIP — пообщаться с артистом за кулисами.</p><p>С помощью Linux namespace мы показываем процессу, что ядро должно отдавать ресурсы из особой области, где распакованы docker image или лежат socket-файлы сетевых подключений.</p><p>Нужно понимать, за что отвечают такие namespaces:</p><ul><li>Файловая система (Mount) — область файловой системы, которая предоставляется приложению как корневая.</li><li>UTS — собственный hostname.</li><li>PID — позволяет в различных пространствах давать одинаковые ID процессам.</li><li>Сети (Network) — позволяет изолировать ресурсы, связанные с сетью. При этом процессы из разных пространств видят свои сетевые устройства, таблицы маршрутизации, правила firewall и так далее.</li><li>Межпроцессное взаимодействие (IPC) — позволяет организовать межпроцессное взаимодействие.</li><li>Пользовательские ID (User) — позволяет иметь копию пользовательских и групповых идентификаторов.</li><li>Время (Time) — позволяет разным процессам видеть разное системное время или часовой пояс.</li></ul><p>Процесс в среде разработки ведет себя немного по-другому, нежели чем в контейнере после сборки. Обработка тех же системных вызовов и набор ресурсов, которые в итоге система вернет процессу при запросе, могут отличаться. Например, процесс запрашивает список пользователей, а он может быть вынесен в другой namespace. Или система может выдать другое дерево файловой системы, потому что базовый образ файловой системы для этого docker image от другого дистрибутива.</p><p>Также на удаленке многие разработчики начали работать в других временных зонах. Часто при дебаге тестировщики не могут найти ошибки в соседних системах из-за разницы временных меток в логах разработчика и системы.</p><p>Что почитать: «Внутреннее устройство Linux», Д. Кетов. В книге рассматриваются основные подсистемы ядра и их сущности: файлы и файловые системы, виртуальная память и отображаемые файлы, процессы, нити и средства межпроцессного взаимодействия, каналы, сокеты и разделяемая память.</p><p>Посмотрим на конкретных примерах, какие проблемы можно отследить.</p><h3>Кейс №1: выросло System time</h3><p>Процесс может потреблять большое количество процессорного времени. Можно диагностировать это стандартными средствами. Посмотреть на цифры в выводе команды TOP:</p><ul><li>US( user time);</li><li>SY (system time);</li><li>WA (wait);</li><li>IO wait и так далее.</li></ul><p>Если разработчик не понимает, за что эти цифры отвечают, он решит, что накосячил где-то в коде. Хотя на самом деле процесс может потреблять много system time.</p><p>Пример из практики: информационная безопасность экспериментировала с журналами аудита и добавила дополнительные правила. По графикам системы мониторингов Grafana нагрузка на сервере подскочила процентов на 30. В этот же день был релиз фронтенд-приложения. Естественно, все решили, что фронт начал атаковать бэкенд, и именно он потребляет больше ресурсов даже не на пике.</p><p>Первая идея — искать, какие REST-вызовы дали нагрузку. На сервере мы видим, что на самом деле выросло SY. В процессе разработчики поняли, что были добавлены новые правила аудита, и решили их убрать. Тогда нагрузка вернулась к обычным стандартным значениям.</p><p>Что почитать: «Сетевые операционные системы», В. Олифер, Н. Олифер. В книге рассматриваются концепции и принципы построения большинства современных ОС.</p><h3>Кейс №2: ошибка в документации</h3><p>Команда писала приложение, в котором использовались криптографические подписи. После сборки и упаковки в Image, все перестало работать, это типичная ситуация. Ошибка говорит, что недоступен файл, который точно должен быть доступен. Базовый образ минималистичен, утилит диагностики в себе не содержит. Для разработчика это тупиком.</p><p>Проблема решилась обычным strace на компьютере разработчика, в котором довольно быстро удалось выудить ошибку системного вызова fopen. Оказалось, в документации криптобиблиотеки ошибка, и монтировать файлы с закрытым ключом нужно по другому пути. Разработчик же пользовался графическим интерфейсом криптобиблиотеки, и о путях знал только из документации.</p><h2>Что в итоге</h2><p>Технология контейнеризации — это не магическая виртуализация. По большому счету, понятие процесса, в котором запускаются программы, никуда не делось. Просто с точки зрения операционной системы он вынесен в отдельный пул ресурсов. Если разработчик понимает, какие стандартные средства операционной системы задействованы в процессе, он сможет диагностировать и ошибки, которые могут возникать в том числе при запуске приложений в контейнерах.</p>]]></content:encoded>
    </item>
    <item>
      <title>Почему Линус Торвальдс ненавидит C++</title>
      <link>https://tproger.ru/articles/pochemu-linus-torvalds-nenavidit-s</link>
      <comments>https://tproger.ru/articles/pochemu-linus-torvalds-nenavidit-s?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Рафаил Агазода]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/pochemu-linus-torvalds-nenavidit-s</guid>
      <description><![CDATA[<p>Линус Торвальдс признается, что ненавидит C++, а программистов на этом языке он оскорбляет. Разбираемся, в чем заключается причина ненависти.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/pochemu-linus-torvalds-nenavidit-s">Почему Линус Торвальдс ненавидит C++</a>»</p>]]></description>
      <category><![CDATA[C++]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[Язык Си]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 12 Sep 2023 11:03:10 GMT</pubDate>
      <content:encoded><![CDATA[<p>В 2007 году пользователь Дмитрий Какурин написал письмо Линусу Торвальдсу, в котором спросил программиста, почему тот использует чистый Си вместо того, чтобы написать все на C++. Само использование чистого Си Дмитрий Какурин назвал емким словом bullshit.</p><p>В ответ Линус Торвальдс поделился своим мнением: bullshit — это сам Какурин, C++ — это ужасный язык, на котором кодеры генерируют, мягко говоря, «нечистоты», а программистов C++ вовсе не стоит допускать до Linux.</p><figure><img src="https://media.tproger.ru/user-uploads/48741/2023-09-12/f70bc826-3ed6-4e64-94de-81744039a0a5.png" alt="" /></figure><p>После откровенных оскорблений Торвальдс перешел к аргументам.</p><h2>Позиция Линуса Торвальдса относительно C++</h2><p>В первую очередь, Линус говорит, что использование C++ неизменно приводит программиста к плохим решениям вроде использования библиотек STL или Boost, которые считаются прекрасными.</p><p>Однако на деле, по мнению Линуса, они постоянно ломаются, отладка кода становится испытанием, а сам код нестабильный и не портируемый.</p><p>Также Торвальдс заявил, что код на C++ построен на абстракциях, которые не работают как следует. Программист может легко обнаружить, что использованная им абстракция неэффективна, и захочет заменить ее, но для этого ему потребуется переписать все приложение.</p><p>Если же программист захочет написать хорошее, эффективное и портируемое приложение на C++, он будет ограничен рамками, которые уже хорошо реализованы на языке Си.</p><p>Кроме того, использование Си страхует программистов от ошибок, и они не смогут «облажаться» на проекте, а сам язык учит кодеров разбираться в низкоуровневых проблемах. По версии Торвальдса, сплошные плюсы.</p><p>Линус признался, что в 1992 году они уже пытались использовать C++ для написания Linux. С тех пор, по его мнению, мало что изменилось.</p><figure><img src="https://media.tproger.ru/user-uploads/48741/2023-09-12/6867ce21-a60b-4aae-8b31-7e7de6134578.jpeg" alt="" /><figcaption>Линус Торвальдс в 1994 году. Должно быть, этот очаровательный молодой человек уже пишет оскорбительные вещи про C++.</figcaption></figure><p>Компиляторы C++ все так же не вызывают доверия, а обработка исключений в них вообще не работает.</p><p>Еще C++ скрывает потребление ресурсов, поэтому использовать его для написания ОС Линус считает невероятно глупой затеей. Зато объектно-ориентированный код можно написать на С без всяких проблем.</p><h2>Позиция защиты C++</h2><p>Линус думает, что ненавидит C++. Но, судя по его комментариям, он вообще не знает C++, а то, что он знает, давно устарело.</p><p>Ранние компиляторы C++ были довольно глючными. Они были не намного хуже, чем компиляторы C, но ошибки в них были разными. При этом компилятор C, который он использовал (gcc), тщательно тестировался на ядре Linux, поэтому он почти никогда не видел в нем ошибок. Зато в компиляторе C++ эти ошибки он мог найти с легкостью.</p><figure><img src="https://media.tproger.ru/user-uploads/48741/2023-09-12/5b324a04-82c7-476e-a7f0-2d84a7282893.png" alt="" /><figcaption>Компилятор Borland C++ 3.1</figcaption></figure><p>C++ был первым популярным объектно-ориентированным языком, а его ранние версии C++ были написаны на Smalltalk со странным синтаксисом. Поэтому ранний C++ работал плохо, и особенно плохо он работал в ядре Linux.</p><p>Похоже, что Линус сделал поспешные выводы, основанные на минимальном анализе. Когда он увидел, что C++ работает не так, как он ожидал, он просто отмахнулся от него, вместо того, чтобы изучить. К примеру, в C NULL может быть типобезопасным, а в C++ для этого нужно использовать nullptr, а не NULL.</p><p>С тем же успехом Линус Торвальдс мог бы заявить, что ненавидит язык суахили, потому что он его не знает.</p><h2>Заключение</h2><p>В целом, Линус Торвальдс прав, и для ядра Linux действительно лучше подойдет низкоуровневый язык Си, а не C++. Но в остальном вся его ненависть сводится к тому, что он попробовал использовать C++ практически на старте языка, и тот ему не понравился.</p><p>Кроме того, стоит помнить, что Линус говорит о C++ в контексте использования языка для написания ядра операционной системы. Этой же позиции придерживаются и другие авторы ОС. Ядра Windows, Linux, iOS, MacOS, FreeBSD написаны на языке Си.</p><p>А что о C++ думаете вы? Справедливы ли нападки Торвальдса?</p>]]></content:encoded>
    </item>
    <item>
      <title>Что общего и в чем разница между MacOS и Linux</title>
      <link>https://tproger.ru/articles/chto-obshhego-i-v-chem-raznica-mezhdu-macos-i-linux</link>
      <comments>https://tproger.ru/articles/chto-obshhego-i-v-chem-raznica-mezhdu-macos-i-linux?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дух айтишной эмо школы]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/chto-obshhego-i-v-chem-raznica-mezhdu-macos-i-linux</guid>
      <description><![CDATA[<p>Разбираемся, справедлив ли аргумент о схожести Linux и MacOS, и объясняем, чем похожи и чем отличаются две операционные системы.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/chto-obshhego-i-v-chem-raznica-mezhdu-macos-i-linux">Что общего и в чем разница между MacOS и Linux</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[unix]]></category>
      <category><![CDATA[macOS]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 08 Sep 2023 11:17:31 GMT</pubDate>
      <content:encoded><![CDATA[<p>Помимо вечной битвы между пользователями Linux и Windows, существует еще один холивар между пользователями Linux и MacOS. Первые утверждают, что MacOS можно считать невероятно переоцененным дистибутивом Linux, а вторые возражают, что ничего общего между этими ОС нет.</p><p>Правда, как всегда, находится посередине. В этой статье мы разберемся, справедлив ли аргумент о схожести Linux и MacOS, и объясним, чем похожи и чем отличаются две операционные системы.</p><h2>Что общего между MacOS и Linux</h2><p>В первую очередь, обе системы в своей современной итерации разработаны на основе Unix. Также и Linux, и macOS совместимы с POSIX.</p><p>POSIX – это стандарт, который определяет совместимость операционных систем, основанных на UNIX.</p><p>POSIX (Portable Operating System Interface) был разработан с целью обеспечить переносимость программного обеспечения между различными UNIX-подобными системами.</p><p>POSIX включает в себя набор спецификаций и интерфейсов для программирования, обеспечивающих единообразие взаимодействия приложений с операционной системой. Этот стандарт определяет функции, системные вызовы, переменные окружения, файловую систему и другие компоненты операционной системы.</p><p>Поддержка POSIX приводит к легкой переносимости серверного программного обеспечения и программ на языках программирования вроде Ruby, Python, gcc, clang, Erlang и многих других, с одной ОС на другую.</p><p>Файловая система в ОС выполнена практически идентично, за исключением того, что macOS не чувствителен к регистру.</p><p>Также почти все программное обеспечение GNU, то есть практически каждая программа, работающая на компьютере с Linux, доступна для macOS.</p><p>GNU – это проект свободного программного обеспечения (Free Software Foundation’s GNU Project), который был запущен Ричардом Столлманом в 1983 году. GNU является сокращением от “GNU’s Not Unix” и представляет собой усовершенствованную и свободную реализацию операционной системы Unix.</p><p>Ключевой элемент GNU – это GNU General Public License (GNU GPL), который предоставляет пользователю свободу использовать, изменять и распространять программное обеспечение под лицензией.</p><p>Лицензия GNU GPL гарантирует, что программное обеспечение, распространяемое под ее знаком, остается свободным и доступным для всех.</p><p>Разработчик может точно воссоздать среду, в которой будет выполняться код, при переходе с MacOS на Linux и наоборот.</p><p>В общем, и Linux, и macOS поддерживают эти стандарты, поэтому и складывается ощущение, что операционные системы похожи друг на друга.</p><h2>В чем разница между macOS и Linux</h2><p>MacOS почти никак не связана с Linux. На самом деле, родословная macOS старше, чем родословная Linux.</p><p>То, что мы сегодня называем macOS, основано на NeXTstep, операционной системе, разработанной NeXT Computing в 1980-х годах.</p><p>NeXT — это компания, которую Стив Джобс основал после того, как покинул Apple в 1985 году после конфликта с советом директоров. Да, есть и такая строчка в биографии Джобса.</p><p>Стив Джобс основал новую компанию и нанял Ави Теваняна в качестве руководителя отдела разработки программного обеспечения.</p><p>Теванян был одним из программистов, разработавших ядро ​​BSD Mach в Университете Карнеги-Меллона, и Джобс попросил его создать на его основе новую многозадачную ОС.</p><p>В качестве основы для NeXTstep использовалась Berkeley Unix BSD 4. Berkeley Unix была разработана Калифорнийским университетом в Беркли после Unix System 3.</p><p>В Unix System 3 вносили различные улучшения, после чего ОС назвали BSD 4. Более поздняя версия BSD под названием Mach была разработана как раз в Карнеги-Меллоне.</p><p>Теванян придумал новую ОС, которая превосходила аналоги на тот момент времени. К примеру, Тим Бернерс-Ли изобрел Всемирную паутину в 1990 году именно на компьютере NeXTstation с NeXTstep в качестве ОС.</p><figure><img src="https://media.tproger.ru/user-uploads/48741/2023-09-08/79032e2d-2aa2-443d-a5e2-64560c0757fb.jpeg" alt="" /></figure><p>В это же время Apple без Стива Джобса пыталась создать собственную ОС, но все было тщетно. Они пришли к решению выкупить NeXT, и Джобс вернулся в компанию.</p><p>Теванян, который стал новым руководителем отдела разработки программного обеспечения Apple, затем переработал NeXTstep в Mac OS X.</p><p>Это до сих пор влияет на работу macOS: в ней инструменты командной строки взяты из *BSD, а в Linux они заимствованы из GNU.</p><figure><img src="https://media.tproger.ru/user-uploads/48741/2023-09-08/62ca6710-339a-4934-bb7a-7e926a16e69e.png" alt="" /></figure><p>Даже сегодня, если вы посмотрите на API macOS, вы заметите, что многие вызовы API, имена классов и функции AppKit начинаются с «NS», например, NSOpenPanel, NSSavePanel, NSWindow, NSResponder и так далее.</p><p>«NS» здесь означает «NeXTSTEP». Даже объект, который обрабатывает основной цикл событий в приложении AppKit, называется NSApplication.</p><p>Linux был разработан позже. Ядро ​​Linux было написано только в 1991 году, а первые дистрибутивы GNU/Linux появились в 1992 году. NeXTstep была выпущена 18 сентября 1989 года и была уже отполированной ОС, которую можно было использовать для серьезных проектов. Этих высот Linux смогла добиться только несколько лет спустя.</p><p>Таким образом, macOS — это не просто дорогая и симпатичная Linux. Это симпатичная NeXTSTEP, которая была симпатичной BSD Unix.</p><p>MacOS — это операционная система BSD UNIX на основе микроядра с собственной собственной подсистемой отображения, архитектурой драйверов и оконным менеджером.</p><p>Linux представляет собой монолитное ядро ​​без родословной UNIX, но благодаря библиотекам и утилитам GNU обеспечивает UNIX-подобную среду POSIX.</p><h2>Почему различия между Linux и macOS важны</h2><p>Теперь, после того как мы выяснили, что у Linux и macOS разные ядра, поговорим о том, почему это вообще важно для пользователя. Дело в том, что Linux с его монолитным ядром выиграл «войну ядер», которая до сих пор не закончена.</p><p>Монолитное ядро Linux – это тип архитектуры ядра операционной системы, в котором все основные функции и драйверы находятся внутри одной исполняемой программы – ядра. В монолитном ядре все части ядра работают в одном адресном пространстве и имеют прямой доступ к аппаратным ресурсам компьютера.</p><p>В монолитной архитектуре ядра, все функции, такие как управление процессами, файловой системой, памятью, сетью и устройствами ввода-вывода, реализованы внутри ядра и взаимодействуют друг с другом напрямую. Это позволяет ядру эффективно управлять ресурсами и обеспечивать высокую производительность системы.</p><p>Как правило, монолитное ядро ​​работает быстрее, но микроядро лучше спроектировано с точки зрения архитектуры: микроядро очень легкое, а основные службы распределены и передают сообщения друг другу.</p><p>К сожалению, в микроядрах задержка больше, чем в монолитном ядре, объединяющем все в одном месте. Mach был одним из первых экспериментов по разработке серьезного микроядра, и многие говорят, что он провалился с точки зрения производительности.</p><p>В macOS (ранее известной как Mac OS X и OS X) используется микроядро XNU (X is Not Unix). XNU является гибридным ядром, в котором сочетаются микроядро и некоторые элементы архитектуры монолитного ядра. Хотя ядро XNU является гибридным, его основной архитектурой является микроядро.</p><p>В микроядре ядро обеспечивает только базовые механизмы, а остальные функции, такие как файловая система и сеть, выполняются в виде отдельных служб, работающих в пользовательском пространстве.</p><p>Но и у macOS есть преимущество. Микроядро стабильнее. Если один модуль даст сбой, все остальные модули будут работать и дальше.</p><p>В этом смысле, вам решать, что важнее: надежность или скорость.</p>]]></content:encoded>
    </item>
    <item>
      <title>Создать Chrome OS и остаться неизвестным: история Джеффа Нельсона</title>
      <link>https://tproger.ru/articles/sozdat-chromeos-i-ostatsya-neizvestnym-istoriya-dzheffa-nelsona</link>
      <comments>https://tproger.ru/articles/sozdat-chromeos-i-ostatsya-neizvestnym-istoriya-dzheffa-nelsona?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дух айтишной эмо школы]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/sozdat-chromeos-i-ostatsya-neizvestnym-istoriya-dzheffa-nelsona</guid>
      <description><![CDATA[<p>Разобрались, кто такой Джефф Нельсон, как он придумал и создал Chrome OS и почему он всё-таки остался неизвестным разработчиком.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/sozdat-chromeos-i-ostatsya-neizvestnym-istoriya-dzheffa-nelsona">Создать Chrome OS и остаться неизвестным: история Джеффа Нельсона</a>»</p>]]></description>
      <category><![CDATA[История успеха]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Карьера]]></category>
      <category><![CDATA[Chrome OS]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 15 Aug 2023 13:00:25 GMT</pubDate>
      <content:encoded><![CDATA[<p>В IT-сообществах <a href="https://www.reddit.com/r/ProgrammerHumor/comments/z0rxmg/still_unknown/">завирусился</a> скриншот, на котором разработчик Джефф Нельсон отвечает на вопрос с сайта Quora: «Поможет ли разработка собственной ОС войти в круг самых элитных разработчиков мира?».</p><p>На это Джефф ответил: «Разработал Chrome OS. До сих пор неизвестен.»</p><figure><img src="https://media.tproger.ru/uploads/2023/08/d08f4d4c-d975-47ce-9a45-ad83f30ac4c6.png" alt="" /></figure><p>Мы решили разобраться, кто такой Джефф Нельсон, как строилась его карьера, как он придумал Chrome OS и почему он всё-таки остался неизвестным разработчиком.</p><h2>Карьера до Google</h2><p>У Джеффа есть <a href="https://www.linkedin.com/in/jeffnelsonjeffnelson?original_referer=https%3A%2F%2Fwww.google.com%2F">профиль на Linkedin</a>, в котором указано, что он учился в Университете Аризоны, в которой получил степень бакалавра по математике в 1993 году, а в 1994 году получил степень магистра в <i>прикладной</i> математике.</p><figure><img src="https://media.tproger.ru/uploads/2023/08/3b03635b-5055-4c4b-b05e-c070bd0630d7.png" alt="" /></figure><p>В 1999 году Нельсон <a href="https://www.quora.com/Whats-it-like-to-have-a-job-interview-with-Elon-Musk?no_redirect=1">попытался устроиться</a> в компанию Илона Маска Х Commerce, когда та была предком PayPal, а не Твиттером. Разработчик признается, что это интервью было одним из самых странных в его жизни.</p><p>Тогда в Х работало около 10 человек, и все, кто его собеседовал, интересовались только soft skills. Даже руководитель инженерного отдела не знал программирования и долго извинялся за то, что не разбирается ни в Java, ни в С++.</p><p>Из-за того, что Илон Маск был единственным бэкендером в компании, именно он проводил техническое собеседование с Джеффом.</p><p>Маск задал всего два вопроса. Первый: “Кем вы видите себя через 5 лет?”. Джефф ответил, что хотел бы находиться на руководящей должности. Второй: “Есть ли вопросы ко мне [Илону Маску]?”. Тогда Нельсон и Маск долго говорили о рисках бизнес-модели X Commerce.</p><figure><img src="https://media.tproger.ru/uploads/2023/08/a0192fa5-09a9-4cf9-8edf-31b7f128e52c.jpeg" alt="" /><figcaption>Илон Маск держит в руках карточку той самой компании X.com</figcaption></figure><p>В итоге Нельсону предложили оклад в 90 тысяч долларов и акции компании. Разработчик отказался: зарплата была гораздо ниже рынка.</p><p>После этого он <a href="https://www.quora.com/Who-are-the-people-who-have-had-major-success-after-not-passing-the-Google-interview-process">ушёл работать в eBay</a>, в которой наш герой руководил проектами стоимостью в 200 миллионов долларов и которая выкупит PayPal в 2002 году.</p><p>В том же 1999 году Джефф <a href="https://www.quora.com/Who-are-the-people-who-have-had-major-success-after-not-passing-the-Google-interview-process">дважды пытался устроиться в Google</a> через “ярмарку вакансий”. Он стоял в очереди из соискателей, после чего интервьюер задал ему загадку, на решение которой было дано 30 секунд. Джефф дважды провалился, и дважды его резюме отправлялось в папку “НЕ ЗВОНИТЬ”.</p><figure><img src="https://media.tproger.ru/uploads/2023/08/3ea7bf9d-3673-488a-adee-bda3e000258b.png" alt="" /><figcaption>Отзыв на книгу Джеффа Нельсона "Programming Mobile Objects with Java"</figcaption></figure><p>В том же продуктивном и весьма неуспешном году Нельсон даже написал книгу “<a href="https://www.amazon.com/Programming-Mobile-Objects-Java-Nelson/dp/0471254061/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1353095185&amp;sr=1-1&amp;keywords=0471254061#customerReviews">Programming Mobile Objects with Java</a>“. Правда, на Amazon у неё всего одна оценка, и та негативная — ему поставили две звезды из-за фактических ошибок в тексте.</p><h2>Работа в Google и разработка Chrome OS</h2><p>В eBay Нельсон проработал до 2006 года, после чего всё же попал в Google. Как и на прежнем месте, он стал одним из руководителей компании.</p><p>Всего через год он придумал Chrome OS. Проблема заключалась в том, что компьютер Джеффа постоянно тормозил, из-за чего разработчик загорелся идеей создать свою ОС.</p><p>Разработка Chrome OS велась до 2008 года, после чего Нельсон представил бета-версию операционной системы руководству. Директорам проект понравился, поэтому они выкупили его у разработчика. В 2012 году Нельсон <a href="https://patents.google.com/patent/US8239662">получил патент на Chrome OS</a>, который, вероятно, приносит разработчику приличные выплаты по сей день.</p><p>Нельсона <a href="https://www.quora.com/Why-did-Jeff-Nelson-invent-Chromebook-at-Google-when-he-clearly-possesses-the-smarts-and-could-have-done-so-in-his-spare-time-and-capitalize-more">спрашивали</a>, почему он не создал независимую ОС без привязки к Google, ведь у него есть явный талант, и он мог заработать на своём творении гораздо больше. Он ответил, что поступил так, поскольку у Google уже были крутые веб-разработки, в отличие от никому не известной новой ОС.</p><p>У Google были инфраструктура веб-приложений, браузер Chrome и рекламная бизнес-модель, а также огромная существующая клиентская база, которую можно было использовать. Джеффу попросту пришлось бы заново разрабатывать Adwords, Writely и Chrome. Кроме того, сама Chrome OS была экономически выгодна именно компании Google.</p><p>За время работы Джефф стал крупным специалистом в Big Data, машинном обучении и облачных технологиях. Среди преимуществ Google он <a href="https://www.quora.com/How-do-I-make-the-most-of-working-at-Google">отмечал</a> лидерство компании в ML и советовал сотрудникам использовать это, чтобы научиться как можно большему.</p><figure><img src="https://media.tproger.ru/uploads/2023/08/62d25ada-99e6-49cf-b958-feffc56aaacd.png" alt="" /><figcaption>Слитая в 2009 году бета-версия Chrome OS. Источник: https://www.betaarchive.com/</figcaption></figure><p>Однако у работы в Google были и прозаичные недостатки. Несмотря на то, что Google рисуют как компанию мечты, в действительности всё не так: здесь работают всё те же люди с политическими амбициями, безалаберностью и ленью.</p><p>Также Нельсон жаловался на то, что руководство было практически недосягаемо для сотрудников, из-за чего процессы в компании постоянно затягивались. Кроме того, в Google не уделяли должного внимания Chrome OS, которого та, по мнению Джеффа, заслуживала.</p><p>Разработчик занимался и другими задачами, например, созданием веб-сервисов Google Apps, но <a href="https://www.quora.com/Why-did-Jeff-Nelson-leave-Google">постоянно просил</a> перевести его на полноценное управление Chrome OS, которую он сам и создал. Конфликт достиг апогея, и Джефф Нельсон обнаружил себя покидающим двери Google.</p><h2>Карьера Джеффа Нельсона после ухода из Google</h2><p>О том, где трудился Нельсон после Google, мы не знаем. В профиле на Linkedin указано, что сейчас он работает CTO в стелс-стартапе — такие компании умышленно избегают общественного внимания.</p><p>В неизвестности Джеффа Нельсона виноват… сам Джефф! Он ничего не рассказывает о том, где работает сейчас, что нового он разработал и каких успехов добился. Большая часть его публичной деятельности так или иначе связана с Chrome OS, даже в ответах на Quora.</p><p>Зато Джефф активно ведёт соцсети — вот его профили на <a href="https://www.quora.com/profile/Jeff-Nelson-32">Quora</a>, в <a href="https://twitter.com/_jeff_nelson">Twitter</a>, в <a href="http://jeffnelsonjeffnelson.tumblr.com/">Tumblr</a> и <a href="https://plus.google.com/+JeffNelsonJeffNelson">Google+</a>. Ещё у него есть <a href="http://www.jeff-nelson.com/">веб-сайт</a>, на котором можно увидеть его многочисленные публикации в научных журналах.</p><h2>Заключение</h2><p>IT — не тот рынок, на котором можно стать суперзвездой. Особенно без всякого пиара и маркетинга. Не отчаивайтесь, если вы достигли невероятных высот, но не станете всемирно знаменитым, это нормально.</p><p>Но если всё же очень хочется, попробуйте стать мемом в интернете.</p>]]></content:encoded>
    </item>
    <item>
      <title>Вышла Linux Mint 21.2 Victoria</title>
      <link>https://tproger.ru/news/vywla-linux-mint-21-2-victoria</link>
      <comments>https://tproger.ru/news/vywla-linux-mint-21-2-victoria?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дух айтишной эмо школы]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vywla-linux-mint-21-2-victoria</guid>
      <description><![CDATA[<p>Новая версия Linux Mint основана на Ubuntu 22.04 LTS. Обновления для новой версии будут выходить до 2027 года.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vywla-linux-mint-21-2-victoria">Вышла Linux Mint 21.2 Victoria</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 17 Jul 2023 10:48:31 GMT</pubDate>
      <content:encoded><![CDATA[<p>Новая версия Linux Mint основана на Ubuntu 22.04 LTS. Обновления для новой версии будут выходить до 2027 года. Также разработчики не планируют работать над следующей версией ОС до 2024 года.</p><p>Для установки Linux Mint 21.2 “Victoria” потребуются минимум 2 ГБ оперативной памяти, 20 ГБ свободного пространства на диске и монитор разрешением от 1024×768 пикселей.</p><h2>Что изменилось в Linux Mint 21.2 Victoria</h2><ol><li>Обновилось графическое окружение Cinnamon 5.8, основанное на GNOME 3.</li><li>Рабочий стол Xfce обновлён до версии 4.18.</li><li>Добавлены порталы Freedesktop, которые позволяет запускать приложения под другие графические окружения.</li><li>Программа для работы с изображениями Pix переделана на базе gThumb 3.12.2. Добавлены новые инструменты для редактирования изображений, новые эффекты и фильтры.</li><li>Изменено темное оформление. Теперь пользователь может выбрать светлую тему, темную тему для приложений и автоматически настраиваемую.</li><li>Инструмент для предпросмотра документов Xreader теперь поддерживает файлы Adobe Illustrator.</li><li>Инструмент для Bluetooth-соединений Blueman обновился до версии 2.3.5.</li><li>Поддерживаются форматы изображений HEIF и AVIF.</li><li>Обновлён интерфейс в менеджере установки приложений. Изменилась сортировка приложений.</li></ol>]]></content:encoded>
    </item>
    <item>
      <title>Вышел релиз Linux 6.4</title>
      <link>https://tproger.ru/news/vywel-reliz-linux-6-4</link>
      <comments>https://tproger.ru/news/vywel-reliz-linux-6-4?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Дух айтишной эмо школы]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vywel-reliz-linux-6-4</guid>
      <description><![CDATA[<p>25 июня 2023 года Линус Торвальдс анонсировал релиз ядра Linux 6.4. Предыдущая версия, Linux 6.3, вышла в конце апреля 2023 года.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vywel-reliz-linux-6-4">Вышел релиз Linux 6.4</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 26 Jun 2023 10:37:10 GMT</pubDate>
      <content:encoded><![CDATA[<p>25 июня 2023 года Линус Торвальдс <a href="https://lkml.org/lkml/2023/6/25/453">анонсировал</a> релиз ядра Linux 6.4. Предыдущая версия, Linux 6.3, вышла в конце апреля 2023 года.</p><p>«Хмм. Заключительная неделя 6.4 завершена, и в основном у нас имеются некоторые исправления netfilter, откаты в mm и несколько обновлений трассировки. Есть случайные незначительные изменения: обычный шум архитектуры, ряд обновлений самопроверки, некоторые исправления файловой системы (btrfs, ksmb) и т. д.», — написал Линус Торвальдс в опубликованном письме из переписки разработчиков.</p><figure><img src="https://media.tproger.ru/uploads/2023/06/23caf57a-871b-4262-bebe-7bffe3dd0aea.png" alt="" /></figure><p>Загрузить Linux 6.4 можно на <a href="https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.4.tar.xz">kernel.org</a>. Коммит Linux 6.4 можно <a href="https://github.com/torvalds/linux/commit/6995e2de6891c724bfeb2db33d7b87775f913ad1">посмотреть на GitHub</a>.</p><p>На данный момент в основной репозиторий было добавлено почти 7500 изменений для ядра 6.4. Всего были предложены 13 044 немержевых набора изменений, и чуть больше 5000 из этих наборов были добавлены.</p><p>Среди изменений 40% связаны с драйверами устройств, 15% — с обновлением кода аппаратных архитектур, 10% — с сетевым стеком, 5% — с файловыми системами и внутренними подсистемами ядра.</p>]]></content:encoded>
    </item>
    <item>
      <title>Линус Торвальдс и его Linux: четыре дня рождения, фонд и комьюнити по всему миру</title>
      <link>https://tproger.ru/articles/linus-torvalds-i-ego-linux-chetyre-dnya-rozhdeniya-fond-i-komyuniti-po-vsemu-miru</link>
      <comments>https://tproger.ru/articles/linus-torvalds-i-ego-linux-chetyre-dnya-rozhdeniya-fond-i-komyuniti-po-vsemu-miru?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[МТС]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/linus-torvalds-i-ego-linux-chetyre-dnya-rozhdeniya-fond-i-komyuniti-po-vsemu-miru</guid>
      <description><![CDATA[<p>Рассказываем, кто и как создал легендарную операционную систему и как поживает её основатель сегодня. Спойлер: отлично!</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/linus-torvalds-i-ego-linux-chetyre-dnya-rozhdeniya-fond-i-komyuniti-po-vsemu-miru">Линус Торвальдс и его Linux: четыре дня рождения, фонд и комьюнити по всему миру</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[История IT]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 05 May 2023 06:03:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Предлагаем отвлечься от серьёзных материалов и отправиться в 80-е и 90-е: пройти путь от школьного увлечения компьютером до разработки собственной ОС — вместе с основателем Linux.</p><h2>Семья журналистов и дедушкин компьютер: история создателя Linux</h2><p>Первым разработчиком и создателем Linux считается Линус Торвальдс, финский программист. Он родился в 1969 году в семье журналистов: мать — редактор в новостном агентстве, отец — радиожурналист, дед по отцовской линии — главред газеты.</p><p>А вот дедушка по матери Лео Вальдемар Тернквист был профессором статистики в Хельсинкском университете.</p><p>Ребёнком Линус любил наблюдать за тем, как дед работает за калькулятором — в то время они мигали лампочками. А в 1981 году профессор заменил калькулятор на компьютер — Commodore VIC-20: так Линус впервые познакомился с электронно-вычислительной машиной.</p><p>После смерти дедушки компьютер полностью перешёл в руки мальчика, и он погрузился в программирование. Сначала это был Basic, но вскоре этот язык быстро ему надоел, Линус начал изучать машинные коды.</p><p>Затем семье удалось купить новый компьютер — Sinclair QL. В это время Линус начал интересоваться операционными системами. Сначала это произошло вынужденно: мальчику пришлось самостоятельно написать драйверы для дисковода, и в процессе он обнаружил несколько ошибок в операционной системе. Захотел их исправить, но, увы, не вышло — ось оказалась зашита в ПЗУ, и ничего изменить было нельзя.</p><p>После школы Торвальдс поступил в Хельсинкский университет и залез в кредит, чтобы купить компьютер с 386 процессором Intel. На компьютере студента стояла операционная unix-система Minix, но она работала с ошибками. Линус написал несколько программ, чтобы это исправить.</p><p>В итоге программ было написано столько, что на руках у Торвальдса была буквально замена Minix. Вскоре он полностью перешёл на использование своей операционной системы.</p><h2>Бесплатное программное обеспечение: идеология и практика</h2><p>Чтобы создать свою операционную систему, Торвальдс использовал чужие программы, опубликованные на базе General Public Licence — Универсальной общественной лицензии. Её разработал Ричард Столлман в 1989 году.</p><p>Суть лицензии — в бесплатности и доступности программ, написанных по ней. Если программист использовал код по этой лицензии, он должен предоставить исходный код своего продукта в открытый доступ, а также дать право его модифицировать и распространять.</p><p>И так по цепочке — каждый следующий программист, который использовал и модифицировал код, открыто предоставляет его всем.</p><p>Изначально Торвальдс не стремился распространять свою ось, но под влиянием преподавателя Ари Лемке всё-таки выложил исходники в открытый доступ.</p><p>Есть версия, что название Linux появилось благодаря тому же университетскому учителю. Сам Торвальдс хотел использовать название Freax (производная от слова «freaks» — фрики, чудики), но преподаватель переименовал каталог с файлами, совместив имя Торвальдса и Unix — получился Linux.</p><p>Если говорить о дне рождения операционной системы, единого мнения на этот счёт не существует. Сам Торвальдс выделяет четыре даты:</p><ul><li>3 июля 1991 года — первое упоминание Linux её создателем как операционной системы.</li></ul><ul><li>25 августа 1991 года — дата официального анонса проекта. Линус Торвальдс считает её приоритетной.</li></ul><ul><li>17 сентября 1991 года. Тогда вышел первый релиз оси версии 0.01, Торвальдс поделился ею в рассылке близким друзьям.</li></ul><ul><li>5 октября 1991 года — выпуск официального публичного релиза Linux версии 0.02.</li></ul><h2>Сделал ли Linu​​x своего создателя богатым?</h2><p>Да, но не сразу. У Торвальдса не было мысли продавать или как-то иначе монетизировать свою операционную систему, поэтому он не брал и не просил за неё денег.</p><p>Сначала Линус Торвальдс был штатным научным сотрудником в Хельсинкском университете. В 1997 году переехал с женой в США и начал работать в компании Transmeta, которая разрабатывала процессоры с низким потреблением энергии. Нельзя сказать, что эта работа приносила много денег.</p><p>Но в 1999 году компания Red Hat, которая занималась настройкой Linux под разные бизнесы, вышла на биржу. И в знак признательности создателю операционной системы выдала Торвальдсу опцион на пакет акций. Через полгода его стоимость составляла $5 000 000.</p><p>Так же поступила и другая компания — VA Linux, но в этот раз акции так не подскочили.</p><p>Тем не менее финансовое положение Торвальдса и его семьи улучшилось: они купили дом, а рядом с семейным автомобилем в гараже появился ещё и жёлтый кабриолет.</p><p>Создатель Linux не раз получал награды за свою работу, самая «громкая» из них — крупнейшая технологическая премия Millennium Technology Prize (2012) с призом в €1 200 000.</p><h2>Чем сейчас занимается Линус Торвальдс</h2><p>В 2003 году Торвальдс ушёл из Transmeta в фонд Linux Foundation, где работает и сейчас. Финансирование фонд получает из пожертвований. В 2017 году бюджет фонда равнялся $50 000 000.</p><p>Фонд продвигает и стандартизирует Linux, обучает и сертифицирует специалистов по работе с системой. Также он поддерживает и участвует в различных проектах с открытым кодом.</p><p>Благодаря фонду Linux имеет большое сообщество разработчиков и пользователей, которые могут помочь: решить проблему и поделиться опытом. Согласно ежегодному отчёту Linux Foundation, только за 2022 год более 2,7 миллиона человек прошли обучение и получили сертификаты фонда. Это только примерная цифра — реальная наверняка больше.</p><p>А чем закончилось ваше школьное увлечение компьютером? Поделитесь своей историей в комментариях.</p>]]></content:encoded>
    </item>
    <item>
      <title>​В Windows 11 теперь можно переписываться с помощью iMessage</title>
      <link>https://tproger.ru/articles/v-windows-11-teper-mozhno-perepisyvatsya-s-pomoshhyu-imessage</link>
      <comments>https://tproger.ru/articles/v-windows-11-teper-mozhno-perepisyvatsya-s-pomoshhyu-imessage?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Павел Федоренко]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/v-windows-11-teper-mozhno-perepisyvatsya-s-pomoshhyu-imessage</guid>
      <description><![CDATA[<p>Свежее приложение Phone Link позволит пользователям ОС Windows 11 получить доступ к iMessage и сообщениям без iPhone.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/v-windows-11-teper-mozhno-perepisyvatsya-s-pomoshhyu-imessage">​В Windows 11 теперь можно переписываться с помощью iMessage</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[iOS]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Windows 11]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 27 Apr 2023 11:00:05 GMT</pubDate>
      <content:encoded><![CDATA[<p>iMessage на Windows: Microsoft <a href="https://blogs.windows.com/windowsexperience/2023/04/26/phone-link-for-ios-is-now-rolling-out-to-all-windows-11-customers/">распространяет</a> для Windows 11 обновление сервиса Phone Link.</p><figure><img src="https://media.tproger.ru/uploads/2023/04/68c88e0f-aaad-45e3-bae0-11152e19433a.jpg" alt="" /></figure><p>С помощью этого приложения и приложения <a href="https://apps.apple.com/ru/app/link-to-windows/id6443686328">Link to Windows</a> для iOS пользователь может совершать/принимать звонки, отправлять и получать сообщения iMessage и просматривать уведомления прямо на компьютере.</p><figure><img src="https://media.tproger.ru/uploads/2023/04/8572d6f4-fb65-4c3d-8b6b-7bac55c0371f.jpeg" alt="" /></figure><p>Правда, пока iMessage ограничивается текстовыми сообщениями в личных чатах. И далеко не до всех пользователей дошло обновление.</p><p>Но это уже большой прорыв, тем более, что все пользователи Windows 11 получат возможности синхронизации Phone Link с iOS к середине мая.</p>]]></content:encoded>
    </item>
    <item>
      <title>5 книг для Linux-инженера: от азов до управления системами</title>
      <link>https://tproger.ru/articles/5-knig-dlja-linux-inzhenera-ot-azov-do-upravlenija-sistemami</link>
      <comments>https://tproger.ru/articles/5-knig-dlja-linux-inzhenera-ot-azov-do-upravlenija-sistemami?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Константин Демин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/5-knig-dlja-linux-inzhenera-ot-azov-do-upravlenija-sistemami</guid>
      <description><![CDATA[<p>Подобрали книги по Linux, которые охватывают максимальное количество тем для специалистов разных уровней. Полезно вне зависимости от опыта.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/5-knig-dlja-linux-inzhenera-ot-azov-do-upravlenija-sistemami">5 книг для Linux-инженера: от азов до управления системами</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 13 Sep 2022 11:00:48 GMT</pubDate>
      <content:encoded><![CDATA[<p>Хоть профессия Linux-инженера и называется так, его работа не ограничивается определённой операционной системой. Инженер — это человек, который умеет всё в плане инфраструктуры, его обучение должно быть разносторонним. Мы подобрали книги, которые охватывают максимальное количество тем, касающихся инфраструктурных решений.</p><p>Список составлен по степени углубления в тему. Первые книги — это база, с которой стоит начать любому, кто интересуется Linux-инжинирингом, последние рассчитаны на опытных специалистов.</p><h2>1. Sander Van Vugt — «Red Hat RHCSA/RHCE 7 Cert Guide: Red Hat Enterprise Linux 7 (EX200 and EX300)»</h2><p><b>О чём:</b> книга, с которой нужно начинать — must have для любого Linux-инженера. Здесь почти 100% того, что нужно знать про операционную систему.</p><p>Компания Red Hat разработала популярный дистрибутив Linux — Red Hat Enterprise Linux. Книга — это подготовка к экзаменам по нему. Она делится на две части, первая посвящена системному администрированию Linux, начинается с базовых тем: как работать в командной строке, создавать пользователей. Дальше — администрирование Linux: структура директорий, файловой системы, управление пакетами и настройка сетей. Вторая часть книги — более глубокая, написана с точки зрения инженера Linux. В ней рассказывается об оптимизации производительности, настройке веб-серверов, систем управления базами данных и т.д.</p><p>Хотя книге уже 7 лет, а RHEL достигла девятой версии, всё, что написано, до сих пор актуально. Структура хороша, а материал идёт от простого к сложному. Начало каждой главы — это теория и примеры, конец — лабораторная работа.</p><p><b>На кого рассчитана:</b> книга подойдёт незнакомым с Linux, если читать её последовательно, всё будет просто и понятно.</p><p><b>Как читается: </b>из недостатков — книга на английском языке. Если знания невысокие, онлайн-переводчики помогут, но будет тяжело. По нашей теме мало информации на русском, нужно быть к этому готовым.</p><h2>2. Виктор Олифер — «Компьютерные сети. Принципы, технологии, протоколы»</h2><p><b>О чём:</b> ещё одна базовая книга, необходимая любому инженеру. Её структура аналогична предыдущей: от простого к сложному. Сначала вы узнаете общие принципы построения сетей, что такое модель OSI и какие основные протоколы существуют, потом перейдёте к более глубоким темам, например, маршрутизации и анализу локальных сетей. Книга знакомит со всем необходимым, подробно это раскрывает.</p><p><b>На кого рассчитана:</b> на людей, совсем незнакомых с сетями.</p><p><b>Как читается:</b> совершенно понятный язык. Как только появляются сложные термины, их сразу и хорошо объясняют.</p><h2>3. James Freeman, Jesse Keating — «Mastering Ansible»</h2><p><b>О чём: </b>так как мы работаем с распределёнными системами, нужно настраивать множество машин. Подключаться к каждому серверу и выполнять однотипные настройки — это рутина, которую система Ansible позволяет избежать.</p><p>Ansible работает так: сначала инженер пишет сценарий того, что необходимо сделать, потом запускает его сразу на нескольких хостах. Так можно подключиться к 10-50 виртуальным машинам и выполнить сценарий на всех. То, что в первой книге делали вручную, в этой автоматизируем.</p><p><b>На кого рассчитана: </b>книга простая, тоже начинается с основ: сначала пишем первые сценарии, затем их выполняем. Но чтобы понимать, о чём речь, нужно знать Linux и прочесть первые две книги.</p><h2>4. Марко Лукша — «Kubernetes в действии»</h2><p><b>О чём: </b>Kubernetes — это система регистрации контейнеров, которая сейчас очень популярна. У нас она есть почти что в каждом проекте.</p><p>В книге описано множество практических примеров, рассказано, для чего Kubernetes создан, как он устроен внутри, какие у него есть сущности, как их правильно устанавливать и настраивать. Здесь есть всё нужное, чтобы начать работать с системой эффективно.</p><p>Однако нет ни одной книги, которая бы на 100% объясняла все нюансы работы. Поэтому параллельно стоит обращаться к документации, многие вещи по Kubernetes там хорошо описаны.</p><p><b>На кого рассчитана: </b>стоит читать, когда есть реальный опыт, а первые две книги из нашего списка усвоены.</p><p><b>Как читается: </b>написана просто, но сам инструмент — один из труднейших, требуется время, чтобы с ним познакомиться. Внутри Kubernetes очень много сущностей, поэтому в книгу нужно погружаться. Зато она есть на русском, что значительно упростит процесс.</p><h2>5. Betsy Beyer, Chris Jones, Jennifer Petoff and Niall Richard Murphy — «Site Reliability Engineering. How Google Runs Production Systems»</h2><p><b>О чём: </b>здесь рассказывается о том, что такое SRE — site reliability engineering, то есть инжиниринг отказоустойчивости сайта и о подходе Google к управлению распределёнными системами.</p><p>В книге описывается, как правильно подходить к продакшен системам, планировать их и управлять ими, как устранять и минимизировать различные сбои. Это руководство по тому, как надо делать крутые отказоустойчивые решения в продуктивной среде, где у клиентов реальное приложение, на которое будут выходить пользователи. К таким системам применяются повышенные требования по отказоустойчивости, доступности. Нельзя, чтобы на сайт было невозможно зайти.</p><p>В книге описывается, как правильно подходить к автоматизации — то, что изучалось в «Mastering Ansible». Также рассказывается про основные показатели и метрики серверов и приложений, за которыми нужно следить. Здесь манифестируется отказоустойчивый подход, применяемый в Google. Говорится, что в идеале нужно сделать, чтобы проблемы не возникло, а не решать, когда она уже случилась. А если всё же избежать аварии не удастся, то будет полезно узнать про правильный подход к реагированию и управлению инцидентами.</p><p><b>На кого рассчитана: </b>опытных специалистов, которые видят необходимость использовать различные отказоустойчивые распределённые системы, серьёзные инфраструктуры с повышенными требованиями доступности. Как правило, это мидл-инженеры с годом боевого опыта.</p><p><b>Как читается: </b>язык простой, подойдёт и будет понятен тем, кто уже освоил первые четыре книги.</p><p>При изучении важно не торопиться, двигаться последовательно, и главное — не забывать о практике. Это лучший учитель, который позволит закрепить теорию, удержать её в памяти как можно дольше. Удачи в учёбе!</p>]]></content:encoded>
    </item>
    <item>
      <title>Учёные тайно внедрили уязвимости в ядро Linux</title>
      <link>https://tproger.ru/news/uchjonye-tajno-vnedrili-ujazvimosti-v-jadro-linux</link>
      <comments>https://tproger.ru/news/uchjonye-tajno-vnedrili-ujazvimosti-v-jadro-linux?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/uchjonye-tajno-vnedrili-ujazvimosti-v-jadro-linux</guid>
      <description><![CDATA[<p>Исследователи из Миннесотского университета проверяли, можно ли протащить уязвимый код в open source; мейнтейнеры поймали их, а вуз получил санкции.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/uchjonye-tajno-vnedrili-ujazvimosti-v-jadro-linux">Учёные тайно внедрили уязвимости в ядро Linux</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Информационная безопасность]]></category>
      <category><![CDATA[Уязвимость]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 22 Apr 2021 07:08:40 GMT</pubDate>
      <content:encoded><![CDATA[<p>Учёные из Миннесотского университета решили провести эксперимент. Они начали внедрять в популярные open source проекты уязвимости под видом свежих патчей. Исследователи хотели узнать, насколько вообще велики шансы провернуть подобное.</p><figure><img src="https://media.tproger.ru/uploads/2021/04/1-autoconverted-7.jpeg" alt="" /></figure><p>В том числе их взор упал и на проект ядра Linux. Связано это с его известностью и адаптированностью по всему миру.</p><p>Специалистам удалось «внедрить» часть патчей, добавляющих в ядро уязвимости. Но по итогу они были пойманы с поличным мейнтейнерами проекта.</p><p>Один из ведущих разработчиков, поддерживающих Linux-ядро, Грег Крох-Хартман даже написал разъярённое письмо исследователям.</p><p>Нашему комьюнити не нравится, когда над ним экспериментируют и «тестируют», отправляя известные исправления, которые либо намеренно ничего не делают, либо намеренно вносят ошибки &lt;...&gt; Из-за этого мне теперь придётся забанить все будущие контрибуции из вашего университета и «похоронить» предыдущие, поскольку они явно были поданы недобросовестно с намерением вызвать проблемы.</p><p>Отметим, что научная работа, ради которой всё это затевалось, вышла ещё в феврале 2021 года. Согласно ей, количество успешных «инъекций» уязвимостей составляет около 60% от общего числа попыток.</p><p>Источник: <a href="https://fosspost.org/researchers-secretly-tried-to-add-vulnerabilities-to-linux-kernel/">FOSS Post</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Тест: угадайте мобильную ОС по скриншоту</title>
      <link>https://tproger.ru/quiz/test-ugadajte-mobilnuju-os-po-skrinshotu</link>
      <comments>https://tproger.ru/quiz/test-ugadajte-mobilnuju-os-po-skrinshotu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Марина Александровна]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/quiz/test-ugadajte-mobilnuju-os-po-skrinshotu</guid>
      <description><![CDATA[<p>Проверка знаний мобильных операционных систем по скриншотам: авторы обещают почти не усложнять задания изменениями внешнего вида интерфейса.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/quiz/test-ugadajte-mobilnuju-os-po-skrinshotu">Тест: угадайте мобильную ОС по скриншоту</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[iOS]]></category>
      <category><![CDATA[Викторины]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 24 Mar 2021 10:28:22 GMT</pubDate>
      <content:encoded><![CDATA[<p>Мы уже делали тесты по <a href="https://tproger.ru/quiz/guess-os-hard/">угадыванию операционных систем</a>, но там преобладал десктоп. Давайте посмотрим, как вы справитесь с мобильными 😉 Обещаем не пудрить мозги кастомизацией. Ну разве что чуть-чуть.</p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft «прокачает» виртуальные рабочие столы в Windows 10</title>
      <link>https://tproger.ru/news/microsoft-prokachaet-virtualnye-rabochie-stoly-v-windows-10</link>
      <comments>https://tproger.ru/news/microsoft-prokachaet-virtualnye-rabochie-stoly-v-windows-10?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/microsoft-prokachaet-virtualnye-rabochie-stoly-v-windows-10</guid>
      <description><![CDATA[<p>Сборка Windows 10 Insider Preview Build 21337 позволит менять порядок виртуальных столов и ставить отдельные обои для каждого из них.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/microsoft-prokachaet-virtualnye-rabochie-stoly-v-windows-10">Microsoft «прокачает» виртуальные рабочие столы в Windows 10</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[Windows 10]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 18 Mar 2021 08:18:42 GMT</pubDate>
      <content:encoded><![CDATA[<p>В Windows 10 обзавелась множеством новых «фишек», в том числе и виртуальными рабочими столами. С самого выхода операционной системы в 2015 году, Microsoft не особо дополняла её новыми возможности. Но ближайшее обновление явно исправит этот момент.</p><p>На сайте компании появился <a href="https://blogs.windows.com/windows-insider/2021/03/17/announcing-windows-10-insider-preview-build-21337/">пост</a>, в котором разработчики анонсировали Windows 10 Insider Preview Build 21337. В свежем апдейте появится ряд мелких нововведений, главным из которых должны стать кастомизируемые виртуальные рабочие столы.</p><figure><img src="https://media.tproger.ru/uploads/2021/03/1-42.jpg" alt="" /><figcaption>Теперь в меню виртуальных рабочих столов появилось полноценное подменю</figcaption></figure><p>Так, если раньше пользователи могли лишь переименовывать их, то сейчас им дадут возможность менять их порядок, а также устанавливать отдельные обои для каждого из них. Сейчас, напомним, все рабочие столы «копируют» обои у первого.</p><p>Для того, чтобы попробовать новую функцию, надо присоединиться к программе Windows Insider и переключиться на «Канал Dev».</p><h3>Как поменять обои у одного из рабочих столов?</h3><p>Нажать правой кнопкой на него и выбрать «Choose background» («Выбрать фон»).</p><h3>Как поменять порядок виртуальных рабочих столов?</h3><p>Нажать правой кнопкой мыши и выбрать «Move Right («Переместить вправо») или «Move Left» («Переместить влево»). Либо просто перетащить мышкой.</p><p>Источник: <a href="https://blogs.windows.com/windows-insider/2021/03/17/announcing-windows-10-insider-preview-build-21337/">Блог Windows</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Google может заменить Material Design на Material NEXT в Android 12</title>
      <link>https://tproger.ru/news/google-mozhet-zamenit-material-design-na-material-next-v-android-12</link>
      <comments>https://tproger.ru/news/google-mozhet-zamenit-material-design-na-material-next-v-android-12?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-mozhet-zamenit-material-design-na-material-next-v-android-12</guid>
      <description><![CDATA[<p>По данным Gizmochina, Google готовит для Android 12 новые правила оформления на смену Material Design, дебютировавшему в 2014 году.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-mozhet-zamenit-material-design-na-material-next-v-android-12">Google может заменить Material Design на Material NEXT в Android 12</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 16 Feb 2021 15:05:49 GMT</pubDate>
      <content:encoded><![CDATA[<p>В ближайшее время от Google ждут релиза первой беты Android 12 для разработчиков. И, судя по свежей публикации Gizmochina, обновление может получить новый дизайн, который будет называться Material NEXT.</p><p>Изменённые «правила оформления» мобильной операционки Google придут на смену прежнему Material Design. Он, напомним, дебютировал в 2014 году вместе с Android 5.0 Lollipop. С тех пор стиль неоднократно дорабатывался, но в целом продолжал придерживаться заложенных в самом начале правил.</p><figure><img src="https://media.tproger.ru/uploads/2021/02/1-19.jpg" alt="" /><figcaption>Утекшие скриншоты Android 12 / Источник: XDA-Developers</figcaption></figure><p>Судя по утекшим скриншотам Android 12, следующая версия «зелёного робота» визуально будет значительно отличаться от предшественников. Теперь это скорее будет помесь iOS и MIUI, нежели прежний Android. Данная особенность может стать причиной перехода от традиционного Material к Material NEXT.</p><p>В новом релизе также могут появиться сильно изменённые виджеты (больше напоминающие таковые в iOS 14), совершенно новые с дизайнерской точки зрения панели уведомлений и управления. По крайней мере, это следует из всё тех же недавно утекших скриншотов системы.</p><p>Судя по опыту прошлых лет, первыми опробовать Android 12 смогут владельцы смартфонов линейки Google Pixel. В дальнейшем к ним подключатся и пользователи избранных флагманов Xiaomi, Realme и некоторых других брендов. Ожидается, что первая бета для разработчиков выйдет уже 17 февраля 2021 года.</p><p>Источник: Gizmochina</p>]]></content:encoded>
    </item>
    <item>
      <title>Harmony OS 2.0 от Huawei оказалась обычным форком Android 10</title>
      <link>https://tproger.ru/news/harmony-os-2-0-ot-huawei-okazalas-obychnym-forkom-android-10</link>
      <comments>https://tproger.ru/news/harmony-os-2-0-ot-huawei-okazalas-obychnym-forkom-android-10?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/harmony-os-2-0-ot-huawei-okazalas-obychnym-forkom-android-10</guid>
      <description><![CDATA[<p>Журналист Ars Technica Рон Амадео протестировал китайскую систему и пришёл к выводу, что Huawei не заменяет Android, а делает собственный форк.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/harmony-os-2-0-ot-huawei-okazalas-obychnym-forkom-android-10">Harmony OS 2.0 от Huawei оказалась обычным форком Android 10</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 03 Feb 2021 13:18:11 GMT</pubDate>
      <content:encoded><![CDATA[<p>Рон Амадео из Ars Technica <a href="https://arstechnica.com/gadgets/2021/02/harmonyos-hands-on-huaweis-android-killer-is-just-android/">опубликовал</a> свежий пост, в котором описал опыт тестирования Harmony OS 2.0. В конечном итоге журналист пришёл к выводу, что вместо «замены Android» китайская компания просто создаёт свой форк мобильной операционки Google.</p><p>Для того, чтобы протестировать разработку Huawei, Амадео пришлось пройти целый «ритуал». Сначала он отправил копию своего паспорта, персонального ID и данные карты разработчикам. Затем прождал около двух дней, пока переданные им сведения проверят вручную. И только после этого журналисту дали доступ к Harmony OS 2.0.</p><p>Хотя как дали… Он не запускал бета-версию операционной системы на каком-то эмуляторе. Вместо этого ОС стримилась к нему в разрешении около 720р, как Stadia стримит игры, а Netflix – сериалы. Т.е. Сама операционка запускалась на неизвестном устройстве в Китае, а Амадео получал лишь картинку с «сервера».</p><p>После небольшого тестирования второй версии Harmony OS, журналист пришёл к выводу, что это лишь немного видоизменённый Android 10. Об этом говорят пункты меню, общий стиль оформления и UX-логика, которые очень сильно напоминают разработку Google.</p><figure><img src="https://media.tproger.ru/uploads/2021/02/2.jpg" alt="" /><figcaption>Внешний вид Harmony OS 2.0. Ничего не напоминает? / Источник: Ars Technica</figcaption></figure><p>Источник: <a href="https://arstechnica.com/gadgets/2021/02/harmonyos-hands-on-huaweis-android-killer-is-just-android/">Ars Technica</a></p>]]></content:encoded>
    </item>
    <item>
      <title>GitHub-репозиторий поможет изучить более 20 различных технологий, включая AR, нейросети и веб-поиск</title>
      <link>https://tproger.ru/news/github-repozitorij-pomozhet-izuchit-bolee-20-razlichnyh-tehnologij-vkljuchaja-ar-nejroseti-i-veb-poisk</link>
      <comments>https://tproger.ru/news/github-repozitorij-pomozhet-izuchit-bolee-20-razlichnyh-tehnologij-vkljuchaja-ar-nejroseti-i-veb-poisk?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/github-repozitorij-pomozhet-izuchit-bolee-20-razlichnyh-tehnologij-vkljuchaja-ar-nejroseti-i-veb-poisk</guid>
      <description><![CDATA[<p>Подборка обучающих материалов охватывает 3D-рендеринг, BitTorrent-клиент, поисковый движок, инструменты командной строки и языки программирования.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/github-repozitorij-pomozhet-izuchit-bolee-20-razlichnyh-tehnologij-vkljuchaja-ar-nejroseti-i-veb-poisk">GitHub-репозиторий поможет изучить более 20 различных технологий, включая AR, нейросети и веб-поиск</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Обучение программированию]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[Дополненная реальность]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 01 Feb 2021 09:33:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>Пользователь Reddit под ником nerdfulness <a href="https://www.reddit.com/r/programming/comments/l8o4cb/build_your_own_x_a_collection_of_tutorials_to/">опубликовал</a> очень полезный пост. В нём он рассказал о GitHub-репозитории <a href="https://github.com/danistefanovic/build-your-own-x">build-your-own-x</a>, в котором собраны обучающие материалы по 27 различным технологиям.</p><p>Среди собранных под одной крышей «технологий» можно найти 3D-рендеринг, инструменты для командной строки, BitTorrent-клиент, поисковый движок и т.д. В репозитории даже собраны материалы, которые учат создавать языки программирования с использованием Ассемблера.</p><h3>Полный список технологий, собранных в репозитории build-your-own-x</h3><ul><li>3D-рендеринг</li><li>Дополненная реальность (AR)</li><li>BitTorrent-клиент</li><li>Блокчейн / Криптовалюта</li><li>Бот</li><li>Инструменты командной строки</li><li>Базы данных</li><li>Docker</li><li>Эмулятор / Виртуальная машина</li><li>Front-end фреймворк / Библиотека</li><li>Игра</li><li>Git</li><li>Сетевой стек</li><li>Нейросеть</li><li>Операционная система</li><li>Физический движок</li><li>Язык программирования</li><li>Движок регулярных выражений</li><li>Поисковый движок</li><li>Shell</li><li>Движок шаблонов</li><li>Текстовый редактор</li><li>Система визуального распознавания</li><li>Воксельный движок</li><li>Движок для веб-поиска</li><li>Веб-сервер</li><li>Без категории</li></ul><p>Источник: <a href="https://github.com/danistefanovic/build-your-own-x#build-your-own-programming-language">GitHub / build-your-own-x</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Китайские разработчики представили дистрибутив Linux в стиле iPadOS</title>
      <link>https://tproger.ru/news/kitajskie-razrabotchiki-predstavili-distributiv-linux-v-stile-ipados</link>
      <comments>https://tproger.ru/news/kitajskie-razrabotchiki-predstavili-distributiv-linux-v-stile-ipados?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Сергей Почекутов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/kitajskie-razrabotchiki-predstavili-distributiv-linux-v-stile-ipados</guid>
      <description><![CDATA[<p>JingOS основан на Ubuntu, поддерживает сенсорный ввод, клавиатуру и мышь и превращает планшет в полноценный компьютер с любыми Linux-приложениями.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/kitajskie-razrabotchiki-predstavili-distributiv-linux-v-stile-ipados">Китайские разработчики представили дистрибутив Linux в стиле iPadOS</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 19 Jan 2021 03:30:55 GMT</pubDate>
      <content:encoded><![CDATA[<p>Разработчики из Китая продемонстрировали возможности нового дистрибутива Linux. Он называется JingOS и, по словам создателей, обеспечивает тот же уровень функциональности, что и iPadOS.</p><p>Новый дистрибутив призван улучшить уровень производительности современных планшетов. Приложения, разработанные для этой платформы, поддерживают сенсорный ввод и режим управления с помощью клавиатуры и мыши. Но главное преимущество JingOS в том, что это полнофункциональная ОС, основанная на Ubuntu. На ней можно запускать любые приложения для Linux.</p><p>Новый дистрибутив протестировали на Huawei MateBook 14 и Microsoft Surface 6. Разработчики обещают в ближайшее время обеспечить поддержку других устройств, в том числе планшетов на базе ARM-чипов.</p><p>На <a href="https://www.jingos.com/">официальном сайте дистрибутива</a> можно подписаться на новости о состоянии JingOS. Доступной для загрузки версия для планшетов станет 31 января 2021 года. В разработке также находится версия для смартфонов. Её планируют выпустить до конца года.</p>]]></content:encoded>
    </item>
    <item>
      <title>Состоялся релиз ядра Linux 5.10 с длительным сроком поддержки не менее двух лет</title>
      <link>https://tproger.ru/news/sostojalsja-reliz-jadra-linux-5-10-s-dlitelnym-srokom-podderzhki-ne-menee-dvuh-let</link>
      <comments>https://tproger.ru/news/sostojalsja-reliz-jadra-linux-5-10-s-dlitelnym-srokom-podderzhki-ne-menee-dvuh-let?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/sostojalsja-reliz-jadra-linux-5-10-s-dlitelnym-srokom-podderzhki-ne-menee-dvuh-let</guid>
      <description><![CDATA[<p>Линус Торвальдс объявил о релизе: версия получила 17 470 исправлений от 2 062 разработчиков и статус ветки с длительным сроком поддержки.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/sostojalsja-reliz-jadra-linux-5-10-s-dlitelnym-srokom-podderzhki-ne-menee-dvuh-let">Состоялся релиз ядра Linux 5.10 с длительным сроком поддержки не менее двух лет</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 14 Dec 2020 08:28:54 GMT</pubDate>
      <content:encoded><![CDATA[<p>На онлайн-ресурсе LKML.ORG было <a href="https://lkml.org/lkml/2020/12/13/290">опубликовано</a> письмо создателя ядра Linux Линуса Торвальдса. В нём объявил о выпуске новой версии своего проекта. Там же разработчик заявил, что Linux 5.10 будет присвоен статус ветки с длительным сроком поддержки, что обяжет команду обновлять данную версию не менее двух лет.</p><figure><img src="https://media.tproger.ru/uploads/2020/12/Screen-Shot-2020-12-14-at-11.11.06.png" alt="" /></figure><h2>Часть интересных нововведений</h2><ul><li>В XFS добавили изменения, позволившие отсрочить проблемы с переполнением 32-разрядного типа данных time_t. В новой версии ядра счётчик будет переполнен к 2468 году, а не к 2038, как это было ранее.</li><li>Наконец-то ядро избавили от реализации KerberosV-алгоритма RC4-HMAC-MD5. Его внедрили десятилетия назад для совместимости с Windows NT/2000, обновление которых было прекращено ещё в 2008 году.</li><li>Добавили поддержку мониторинга температуры в драйвере k10temp для чипов AMD Zen 3.</li></ul><p>Разумеется, это далеко не все изменения. В общей сложности, новая версия ядра <a href="https://www.opennet.ru/opennews/art.shtml?num=54252">получила</a> 17 470 исправлений, внесённых 2 062 разработчиками. Общий вес патча составляет 64 МБ.</p><p>Интересная статистика, приведённая в тексте релиза: примерно 42% из всех представленных в Linux 5.10 изменений касаются драйверов устройств, около 16% — обновления кода, специфичного для аппаратных архитектур, 13% — сетевого стека и по 3% изменений коснулись файловой системы и внутренних подсистем ядра.</p><p>Источник: <a href="https://lkml.org/lkml/2020/12/13/290">LKML.ORG</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Google сделала проект новой ОС Fuchsia более открытым — присоединиться к разработке может каждый</title>
      <link>https://tproger.ru/news/google-sdelala-proekt-novoj-os-fuchsia-bolee-otkrytym-prisoedinitsja-k-razrabotke-mozhet-kazhdyj</link>
      <comments>https://tproger.ru/news/google-sdelala-proekt-novoj-os-fuchsia-bolee-otkrytym-prisoedinitsja-k-razrabotke-mozhet-kazhdyj?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Сергей Почекутов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-sdelala-proekt-novoj-os-fuchsia-bolee-otkrytym-prisoedinitsja-k-razrabotke-mozhet-kazhdyj</guid>
      <description><![CDATA[<p>Предлагать изменения в Fuchsia теперь может любой разработчик: у проекта появились публичные списки рассылки, баг-трекер и дорожная карта.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-sdelala-proekt-novoj-os-fuchsia-bolee-otkrytym-prisoedinitsja-k-razrabotke-mozhet-kazhdyj">Google сделала проект новой ОС Fuchsia более открытым — присоединиться к разработке может каждый</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Google]]></category>
      <category><![CDATA[Fuchsia]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 09 Dec 2020 04:33:47 GMT</pubDate>
      <content:encoded><![CDATA[<p>Google сообщила о расширении открытой модели разработки операционной системы Fuchsia. Теперь в разработке <a href="https://opensource.googleblog.com/2020/12/expanding-fuchsias-open-source-model.html">могут принимать участие</a> не только сотрудники компании, но и представители сообщества.</p><p>Чтобы сторонним разработчикам было удобнее следить за проектом и присылать свои изменения, сотрудники Google ввели в строй публичные списки рассылки и систему отслеживания ошибок. Также в публичном доступе появилась дорожная карта Fuchsia, которая поможет понять направление и приоритеты развития операционной системы. Механизмы принятия решений описаны в общедоступной модели управления проектом.</p><p>Из <a href="https://fuchsia.dev/fuchsia-src/contribute/roadmap">опубликованной дорожной карты</a> видно, что среди первичных задач отмечена разработка фреймворка для драйверов устройств, которые можно будет обновлять отдельно от ядра системы. Также в приоритете улучшение производительности файловых систем и расширение средств ввода для людей с ограниченными возможностями.</p><p><a href="https://fuchsia.dev/">Fuchsia</a> — проект с открытым исходным кодом, целью которого является разработка универсальной операционной системы. Впервые о нём стало известно более 4 лет назад. В основе новой ОС — микроядро Zircon, основанное на наработках проекта LK, который был расширен для применения на устройствах различного класса, включая смартфоны, компьютеры и потребительскую технику.</p>]]></content:encoded>
    </item>
    <item>
      <title>Стоит прочитать: обзор книги Do Hoang Tu «Operating System from 0 to 1»</title>
      <link>https://tproger.ru/books/book-os-from-0-to-1</link>
      <comments>https://tproger.ru/books/book-os-from-0-to-1?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Типичный программист]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/books/book-os-from-0-to-1</guid>
      <description><![CDATA[<p>Отзыв на руководство, которое ведёт читателя через создание операционной системы с нуля — на Ассемблере и C, без сторонних инструментов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/books/book-os-from-0-to-1">Стоит прочитать: обзор книги Do Hoang Tu «Operating System from 0 to 1»</a>»</p>]]></description>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Стоит прочитать]]></category>
      <category><![CDATA[Книги]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 18 Nov 2020 12:37:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Около двух лет назад в одном из блогов про IT я натолкнулся на статью, в которой автор вкратце, буквально за 15 минут рассказывал о своем опыте в любимой для многих начинающих программистов идее создания собственной операционной системы. Причем на моей памяти — это вторая статья на русском языке, где автор не собирал новый дистрибутив линукс или просто строил планы о том, как создаст новую операционную систему, которой будет суждено изменить мир. По факту автор с нуля на Ассемблере и C написал довольно примитивную операционную систему, не используя ничего кроме компиляторов. В своем материале он ссылался на до тех пор неизвестную мне книгу «Operating System from 0 to 1» написанную неким разработчиком по имени Do Hoang Tu.</p><p>Кстати, интересно, что она не находилась где-нибудь на сайтах с книгами, тем более не продавалась в книжных магазинах, единственным местом, где мне удалось найти текст книги, был <a href="https://github.com/tuhdo/os01">GitHub репозиторий</a>, созданный автором. Ну, и конечно, ее не было на русском, и я почти уверен, что до сих пор нет в переводе, только английский оригинал. Но так еще лучше: отличная прокачка знаний языка для программистов.</p><p>Книга проводит читателя через весь процесс создания операционной системы с нуля, даже человек, не знающий принципов электроцепей и не имеющий глубоких знаний в программировании, может разобраться с темой. И это мне, как специалисту в другом направлении программирования особенно понравилось. Книга знакомит с основными терминами компьютерных систем, из чего состоит процессор, как на физическом уровне создаются логические схемы, что такое MOSFETs и цифровые логические вентили (digital logic gates). При этом автор не вдается в глубокие подробности, которые можно изучить дополнительно из другой литературы.</p><p>Затем в книге даются знания о том, как создать операционную систему для IBM x86 процессоров. При этом читателю достаточно довольно неглубоких знаний в таких языках как С/С++ и Ассемблер. Есть отдельная глава об этих языках и их совместном использовании: «we will explore assembly language, and how it connects to C». Есть там и про бинарный код и инструкции Assembly.</p><p>Тема тронула меня и вызвала не только интерес, но и энтузиазм, ведь я много лет назад уже собирал Linux from scratch. А также полгода как начал на досуге учиться программировать на С, с которым мне не приходится работать, потому что я специализируюсь на веб-разработке. В процессе чтения я предпринял попытку реализовать часть знаний, полученных из книги, насколько мне позволяли свободное время и опыт в С программировании. И, Oh my Gosh, у меня получилось запустить в виртуальной машине ОС с функциональностью печатной машинки. Да-да, это немногим больше, чем «Hello word», но для меня этого с лихвой хватило, чтобы вдохновиться на то, чтобы продолжать изучать эту тему.</p><p>Но это еще не все. Из книги можно почерпнуть базовые знания по архитектуре современных компьютеров, принципы работы логических схем и центральных процессоров, работающих на их физической реализации. Она помогает понять, как устроены операционные системы. В особенности автор рекомендует ее прочитать тем, кто хочет разбираться в Linux не просто как уверенный пользователь или администратор, но как настоящий разработчик таких сложных систем и программного обеспечения к ним. Я считаю, что это одна из тех книг, которую стоит прочитать каждому студенту IT-специальностей, потому что она создаст в голове правильную базу знаний, понимания профессии.</p>]]></content:encoded>
    </item>
  </channel>
</rss>