A problem with the server request occurred единый урок что делать
Перейти к содержимому

A problem with the server request occurred единый урок что делать

  • автор:

Тест по цифровой безграмотности

В 2017 году во всех школах России пройдет Единый урок по безопасности в сети Интернет. Пройди тест и узнай насколько ты уверенный пользователь сети — 20 вопросов в тесте охватывают основные темы информационной безопасности.

Тест ориентирован на школьников в возрасте от 11 до 19 лет. По окончанию теста каждый его участник сможет получить электронный сертификат о успешном прохождении теста и участии в Едином уроке.

StReLoK ☆☆
30.10.17 08:35:41 MSK
1 2 3 4 →

Школьники в возрасте 19 лет. Это самые отъявленные двоечники-имбицилы-второгодники чтоль?

Zhbert ★★★★★
( 30.10.17 08:41:02 MSK )

Примерный вид тесте такой?

  • Как выглядит компУтер?
  • Как включить компУтер?
  • Для чего нужна клавиатура?
  • А, кстати, как она выглядит?
  • Как называется фигня с кнопками и колесиком?
  • Паникуете ли вы, услышав посторонние звуки, когда вставляете флешку?
  • Уверены ли Вы, что вставили именно флешку? ну и далее в таком духе, ага.

Oberstserj ★★
( 30.10.17 08:41:29 MSK )

От вёрстки сайтика глаза обливаются кровью. Спецыалисты, а responsive design в 2017 году не осилили.

Unicode4all ★★★★★
( 30.10.17 08:42:46 MSK )

A problem with the server request occurred

Vovka-Korovka ★★★★★
( 30.10.17 08:44:46 MSK )
Ответ на: комментарий от Vovka-Korovka 30.10.17 08:44:46 MSK

А говнокодеры бэка нет 🙂

Unicode4all ★★★★★
( 30.10.17 08:46:01 MSK )
Ответ на: комментарий от Unicode4all 30.10.17 08:42:46 MSK
ozz_is_here
( 30.10.17 08:46:57 MSK )
Ответ на: комментарий от ozz_is_here 30.10.17 08:46:57 MSK

Чтобы я мог с мобилы смотреть веб, и при этом он не выжигал мне глаза?

Unicode4all ★★★★★
( 30.10.17 08:47:45 MSK )

Error displaying the error page

af5 ★★★★★
( 30.10.17 08:49:46 MSK )
Ответ на: комментарий от Unicode4all 30.10.17 08:46:01 MSK

У пользователя компьютера уже несколько дней слезиться глаза, появились боли в руках. Что делать?

В этот раз без ошибки, но тест по русскому языку создателям теста пройти не помешает. Или этот тест писал Шома?

Unicode4all ★★★★★
( 30.10.17 08:52:02 MSK )

Тебе будет задано 20 вопросов; Вопросы выводятся из бассейна вопросов случайным образом и они всегда разные; Вопросы могут быть с одним или несколькими ответами; За правильные ответы начисляются баллы;

Вопросы выводятся из бассейна

Anoxemian ★★★★★
( 30.10.17 08:52:53 MSK )

Error displaying the error page
A problem with the server request occurred

sehellion ★★★★★
( 30.10.17 08:57:27 MSK )

Тест Единого урока по безопасности в сети «Интернет»

Использовать один пароль для всех интернет-ресурсов

Запускать все вложения, присланные на электронную почту

Выставлять всю информацию о себе в социальные сети

Слышали да, Установить на свой ПК антивирус!

Ramil ★★★★
( 30.10.17 08:58:01 MSK )
Ответ на: комментарий от Zhbert 30.10.17 08:41:02 MSK

greenman ★★★★★
( 30.10.17 08:58:10 MSK )
Ответ на: комментарий от Anoxemian 30.10.17 08:52:53 MSK

sehellion ★★★★★
( 30.10.17 08:58:13 MSK )

В общем, этот тест пройти не представляется возможным.
Но тогдо, что мы увидели, уже достаточно, чтобы оценить уровень

sehellion ★★★★★
( 30.10.17 09:00:40 MSK )

Тест Единого урока по безопасности в сети «Интернет» A problem with the server request occurred

Что мне делать. Мой компьютер взломан.

greenman ★★★★★
( 30.10.17 09:01:14 MSK )
Ответ на: комментарий от sehellion 30.10.17 09:00:40 MSK

В общем, этот тест пройти не представляется возможным.

Просто ты, бездуховный, растерял все скрепы. А ходил бы в воскресную школу, то знал бы, что это во всем виноваты демоны и процессы 666. Антивирус ставить надо было!

Oberstserj ★★
( 30.10.17 09:03:17 MSK )
Ответ на: комментарий от sehellion 30.10.17 09:00:40 MSK

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

StReLoK ☆☆
( 30.10.17 09:05:47 MSK ) автор топика
Ответ на: комментарий от greenman 30.10.17 09:01:14 MSK

Когда необходима покупка антивирусного программного обеспечения? [] В случае, если компьютер заражён, а работа остановилась [] Сразу после покупки нового компьютера, перед подключением его к Интернету

ПОКУПКА, блджад. Бесплатные варианты не рассматриваем.

greenman ★★★★★
( 30.10.17 09:08:48 MSK )
Ответ на: комментарий от Unicode4all 30.10.17 08:47:45 MSK

Смотри с декстопа, если не хочешь страдать, чо

ozz_is_here
( 30.10.17 09:08:58 MSK )
Ответ на: комментарий от greenman 30.10.17 09:08:48 MSK

Я удивлен, что они не предложили купить антивирус Кашперского.

ozz_is_here
( 30.10.17 09:17:59 MSK )

Что нужно сделать в первую очередь, если компьютер подвергся атаке?

Выключить до приезда специалистов монитор

Неправильно, процессор надо выключать

ozz_is_here
( 30.10.17 09:18:52 MSK )

Sadler ★★★
( 30.10.17 09:31:44 MSK )
Ответ на: комментарий от ozz_is_here 30.10.17 09:18:52 MSK

Выключить до приезда специалистов монитор

Выдернуть шнур, выдавить стекло же.

Sadler ★★★
( 30.10.17 09:36:17 MSK )
Ответ на: комментарий от Unicode4all 30.10.17 08:47:45 MSK

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

Deleted
( 30.10.17 09:50:47 MSK )

pikabu.ru + yaplakal.com туда наверно полным составом сходили посмотреть. Если на хабре опубликовать, там там сервер точно умрет.

vel ★★★★★
( 30.10.17 09:58:24 MSK )

При регистрации в социальных сетях Вас просят загрузить свою фотографию. Ваши действия? 1. Выберите и загрузите самую красивую фотографию 2. Вместо фото загрузите аватарку или картинку 3. Загрузите групповую фотографию 4. Загрузите чужую фотографию 

bvn13 ★★★★★
( 30.10.17 09:59:36 MSK )

А что в исходниках за jm-fitness?

dmxrand
( 30.10.17 10:02:24 MSK )

Там хотя бы рассказывают как правильно платить биткоины для разблокировки после вируса ПЕТЬЯ?

justAmoment ★★★★★
( 30.10.17 10:12:35 MSK )
Ответ на: комментарий от bvn13 30.10.17 09:59:36 MSK

Test inspired by Matvienko

redgremlin ★★★★★
( 30.10.17 10:13:45 MSK )

Единый тест по безопасности в сети «Интернет»
Connection is Not Secure

anonymous_sama ★★★★★
( 30.10.17 10:30:31 MSK )
Ответ на: комментарий от Zhbert 30.10.17 08:41:02 MSK

8+11 да, так бывает

Так что на вопрос ты ответил сам, к зеркалу тебя не потащу.

Morin ★★★★
( 30.10.17 10:37:18 MSK )

Это на каком языке?

Он пообещает Вас поделиться интересной информацией

Они сами это хоть раз прочитали?

fornlr ★★★★★
( 30.10.17 11:16:37 MSK )
Последнее исправление: fornlr 30.10.17 11:23:13 MSK (всего исправлений: 2)

Я короче не знаю, что отвечать. На полпути сдался.

Почему нет варианта на открытие файла от незнакомого человека хекс редактором?

Почему нельзя идти �� на встречу с понравившимся человеком в интернетах при определенных условиях?

fornlr ★★★★★
( 30.10.17 11:21:45 MSK )
Последнее исправление: fornlr 30.10.17 11:22:26 MSK (всего исправлений: 1)

Расизм детектед

Их бы прокатить по судам за розжиг расизма

Где негры афроамериканцы?

bvn13 ★★★★★
( 30.10.17 11:22:47 MSK )

«Вопросы выводятся из бассейна вопросов» Пять. Переводили явно гугл транслейтом без понимания переводимого.

AlexAT ★
( 30.10.17 11:33:13 MSK )

«Может ли мошенничество быть электронным риском»

Вообще тест ужасен. Причём я там набрал аж 78.5%, при том, что вопросов на 7-8 ответил в духе «При проникновении вируса — вызвать милицию, скорую, и пожарных для надёжности».

AlexAT ★
( 30.10.17 11:37:27 MSK )
Ответ на: комментарий от Anoxemian 30.10.17 08:52:53 MSK

ну это тру трансляторы просто переводили

SR_team ★★★★★
( 30.10.17 11:45:32 MSK )

Внезапно задумался: А что есть персональные данные? ФИО является персональными данными?

Evgueni ★★★★★
( 30.10.17 11:55:43 MSK )
Ответ на: комментарий от Evgueni 30.10.17 11:55:43 MSK

Мне тоже такой вопрос попался. Тоже не понял как правильно.

a111
( 30.10.17 11:56:22 MSK )
Ответ на: комментарий от Sadler 30.10.17 09:36:17 MSK

Кстати, мне всегда было интересно, а почему пишут «выдавить стекло», хотя его вроде как разбивают молотком? У меня из-за этого всего слово «выдавить» ассоциируется не с выдавливанием к примеру майонеза из упаковки, а с выдавливанием жала после укуса осы, или крови на анализ в больнице.

ozz_is_here
( 30.10.17 12:02:09 MSK )
Ответ на: комментарий от Oberstserj 30.10.17 08:41:29 MSK

thunar ★★★★★
( 30.10.17 12:03:25 MSK )
Ответ на: комментарий от AlexAT 30.10.17 11:37:27 MSK

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

Просто мог проникнуть вирус от запрещенной в России организации

ozz_is_here
( 30.10.17 12:03:30 MSK )
Ответ на: комментарий от ozz_is_here 30.10.17 12:02:09 MSK

Потому что до выдавливания стекла надо выдернуть шнур.

StReLoK ☆☆
( 30.10.17 12:04:29 MSK ) автор топика
Ответ на: комментарий от AlexAT 30.10.17 11:33:13 MSK

Это когда хотели модно, стильно, молодежнно, но они только модно, стильно и молодежно обосрались

ozz_is_here
( 30.10.17 12:04:36 MSK )

У бэка лорэффект, программист тест завалил видать.

l0stparadise ★★★★★
( 30.10.17 12:06:05 MSK )
Ответ на: комментарий от ozz_is_here 30.10.17 12:02:09 MSK

Выдернуть шнур, выдавить стекло. Это было на старых автобусах. Без молотка.

Rubystar ★★
( 30.10.17 12:09:21 MSK )
Ответ на: комментарий от fornlr 30.10.17 11:21:45 MSK

Почему нет варианта на открытие файла от незнакомого человека хекс редактором?

Шутишь что ли? Какой HEX редактор, если на информатике в школе учат обычно как делать презентации в PowerPoint и делать открытки в Word. В моей школе максимум было создание HTML странички строго по шаблону (без div даже), а одноклассник чуть не получил двойку, когда начал писать , ибо неправильно (нет, учительница просто разозлилась, что кто-то слишком умный. А этот чувак сейчас в веб-макаки пошел). До этого конечно пытались рассказать про Turbo Pascal (который запускался на перадской XP в режиме DOS) и VB6 (2013 год, ага, VB6 к месту очень). Но всем было насрать, никому не было интересно. Да и оно понятно: сначала изучали составляющие компьютера (причем даже не внутренности системника, нет), потом долго сидели и изучали особености ворда и пп, и потом резко перешли к программированию (опять же ничего полезного там не было, всё сводилось к «перепечатайте этот код и выполните его»).

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

ozz_is_here
( 30.10.17 12:17:17 MSK )
Ответ на: комментарий от Rubystar 30.10.17 12:09:21 MSK

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

ozz_is_here
( 30.10.17 12:17:59 MSK )
Ответ на: комментарий от Zhbert 30.10.17 08:41:02 MSK

Нет. Был у меня одноклассник, ему в 11 классе было 19 лет. Хотя почти всем было 18 лет к тому времени, много кто на права сдавал.

Безопасное программирование в PHP

Привет, Вы узнаете о том , что такое безопасное программирование в php, Разберем основные из виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое безопасное программирование в php , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) . Урок этот предназначен скорее для тех, кто уже или прочел предыдущие уроки и знает основы, или же и так знал. Да-да, речь идет о безопасном программировании. Уточню — безопасное программирование не значит, что если написать что-то не так, то скриптописатель может ни с того ни с сего получить волшебный пендель от своего творения, когда не соблюдена безопасность. И это так же не значит, что программа может взорваться с мощью хорошей гранаты.
Нет-нет, безопасной программирование — значит создание такой программы, которая будет правильно работать в самых экстремальных ситуациях, создавая максимальную защищенность во-первых — пользовательским данным, во-вторых — системе, которая ее исполняет.
Почему я на первое место поставил именно данные? Да потому, что в случае «икс» (то есть когда возникла нештатная ситуация), если причинен ущерб системе, то это — расходы на восстановление только системы. А представим, что это у нас банковские операции и что-то там украли или повредили? Вот здесь уже и про гранату и про пендель придется вспомнить.
О том, как надо
Ну, со вступлением вроде бы разобрались, перейдем к делу. С чем же работает каждая программа? Конечно же, с данными. Данные принимают, данные передают, данные обрабатывают, их ищут и так далее. И вот на каждом этапе нужно думать о безопасности. Да, так оно и есть. Нельзя сначала написать скрипт кое-как, а потом приступать к фазе его «дезинфекции». Так не выйдет — мы все люди, и что-нибудь точно забудем. Да и потом, если сразу все делать правильно, то не возникнет и сомнений потом. А, значит, и нужды перепроверять. Хотя, конечно, программ без ошибок не бывает. Но в наших силах сделать так, чтобы их число было минимальным.

О пользователях и хакерах

Теперь я бы хотел рассказать о том, зачем же делать безопасным нашу программу. Ведь если пользователи заинтересованы в сохранности своих данных, с чего бы им вредить системе. Так вот, далеко не все пользователи заинтересованы в сохранности данных. А точнее — есть такие, которые заинтересованы в не сохранности чужих данных. Опять же — номера кредитной карты. Как ведь хочется его украсть. А значит, если у нас есть такие деятели, то я настаиваю: с точки зрения системы любой пользователь === хакер. То есть, подводя итог абзацу, скажу: в отношении всех действий пользователя действует презумпция виновности.

Мишени и лазейки

Теперь уже о конкретике. Расскажу о самых частых ошибках в программах. Именно на них нацелены действия хакеров, которые надеются, что автор что-то не учел. Используя такие ошибки, можно подобрать лазейки, и воспользоваться ими. Итак, поехали.
Пример. У нас есть скрипт авторизации — самый частый случай. Пусть он выглядит так: $admin=0;
//тут может быть еще что-нибудь предварительное
$admin=$_REQUEST[‘admin’];
if($admin)
//..функционал админа
>
else
//что-то еще
>
?> Что, казалось бы, здесь не так? Если пользователь — админ, так и показываем ему часть администрирования, иначе же — нет. Но при внимательном рассмотрении можно заметить серьезную ошибку. Если вызвать скрипт так:

CODE: script.php?admin=1 То кто угодно увидит часть администратора. Ведь $admin придет из запроса к скрипту и будет предустановленно. Это — классическая ошибка «register_globals = On» + «неинициализированные переменные». В самом деле, ведь мы не инициализировали переменную $admin, вот и результат на лицо.
Самым правильным решением будет отключение register_globals и явная инициализация всех используемых в скрипте переменных.

Перейдем к следующему примеру. Об этом говорит сайт https://intellect.icu . Пусть наша система — это некоторый мониторинг процессов. Но это не просто монитор какого-то процесса, а универсальный монитор (то есть мы хотим сделать такую систему, которая бы умела смотреть за состоянием какого угодно процесса). Набросать можно легко: $rgResult=array();
$processName=$_POST[‘processName’];
exec(«ps aux | grep «.$processName, $rgResult);
foreach($rgResult as $value)
echo($value.»
\n»);
>
?> Попросту говоря, выводим всю найденную информацию об интересующем нас скрипте. Ну что ж, вспоминаем о безопасности. В этом примере видна грубейшая ошибка — передача пользовательских данных непосредственно на исполнение. В каком месте (мы же вроде исполняем только команду ps)?
В том самом месте, в котором мы просто так передаем имя процесса. Ведь мы же можем в $processName написать, скажем:

Приведу также третий распространенный пример небезопасного кода. Опять же, пусть у нас есть скрипт аутентификации: $login=$_POST[‘login’];
$password=$_POST[‘password’];
//предполагаем соединение с БД установленным
$result=mysql_query(«SELECT user_id FROM users WHERE login=$login AND password=$password»);
if(mysql_num_rows($result))
//все хорошо — пользователь найден, выполняем процедуру его логина
>
else
//какая-то ошибка для пользователя
>
?> Это классический пример так называемого SQL-Injection. Точнее. не его самого, а возможности для него. Ведь представим себе, что передадим в поле $password вот что:

CODE: 12345; UPDATE users SET password=’0′ WHERE login=’admin’ Что выйдет? Все верно, MySQL получит запрос (соединение-то уже установлено) и выполнит запрос на обновление пароля пользователя admin. После этого заходим этим пользователем с паролем ‘0’ и можно считать задачу выполненной.
Для защиты необходимо экранировать пользовательский ввод. Это значит, что все специальные символы предваряются специальным символом «\» или заменяются. Для этого существуют функции:
mysql-real-escape-string
Для библиотеки собственно mysql; mysqli-real-escape-string для библиотеки mysql; и addslashes для общего случая.

Почти всегда предпочтительнее первая, но иногда может пригодиться и вторая (когда хочется экранировать не все, например, для расширенного пользовательского поиска). Я лично вторую применяю в системах, ориентированных на заведомо добросовестных пользователей (да, бывают и такие) — например, какая-нибудь система администрирования для работы в узком кругу разработчиков некоторого проекта. Но бдительность терять все же не стоит и в таких случаях.

Оборона тыла

Бывают ситуации, когда даже хорошо написанный скрипт все равно приводит к взлому. Такое может случиться, если сама система настроена неверно. Это может быть ОС или веб-сервер. Или сервер БД.
Опять же, пример:
У нас есть 2 файла: /www
|
+—database.inc
|
+—script.php И script.php, скажем, выглядит так: include(«database.inc»);
//далее работа с БД
?> Собственно, database.inc нужен для соединения с БД. Казалось бы — все хорошо и удобно, не нужно по нескольку раз в скриптах писать строки соединения с БД. Но опять же хитроумный пользователь вводит в строку http://наш_сайт/database.inc
И что же? Да ничего хорошего. Пользователю просто отобразится этот файл, и все. Просто потому, что веб-сервер не знает такого типа файлов (в большинстве случаев) и предлагает его скачать. Ну а зная пользователя и пароль к БД можно много чего сделать.

Как защититься? Во-первых, не использовать невнятные расширения для подключаемых файлов. Подключайте просто *.php, и все. Во-вторых, все без исключения файлы, которые не предназначены для просмотра, выкладывайте в каталог, который попросту не доступен веб-серверу. Например, в каталог, который в дереве каталогов выше, чем корневой каталог веб-сервера.
Иногда советуют использовать .htaccess файлы для запрещения доступа к таким файлам. Но я уверен — зачем так делать, если у нас есть универсальное решение? Решение с .htaccess я бы назвал скорее следствием, решением надуманной проблемы. Сильно сомневаюсь, что без всяких там хитрых *.inc не обойтись.

Далее — пример для БД. Здесь чаще всего проблемы с безопасностью возникают, когда у пользователя БД, от имени которого работает скрипт, слишком много прав. Правило номер 1 — никогда не работайте в скрипте от имени БД-пользователя root. Не нужно так делать, и все тут. Этот пользователь не предназначен для работы из скрипта. Исключения — слишком редки, чтобы так не делать.

В остальном я бы рекомендовал под каждый проект создавать свою БД, для этой БД — одноименного пользователя и выдавать этому пользователю полные права (но без права GRANT) на эту базу. Здесь могут быть исключения, когда с одной БД должны работать несколько пользователей.

Тогда права следует раздавать так — сначала отобрать все права, а затем по мере необходимости выдавать. Тогда набор прав будет строго минимален. Затем добавлю, что все пользователи должны иметь право только локального логина (иначе говоря, пользователи с полем host, равным «%» в служебной таблице, по возможности, должны отсутствовать). Если уж и есть необходимость удаленного логина, то лучше каждый хост добавлять отдельно, избегая пресловутого хоста «%»

Теперь немаловажная составляющая — сама система. Имеется ввиду операционная система. Я уже упомянул, что UNIX-системы очень устойчивы, когда речь идет о безопасности. Но если не думать, то можно наломать дров и в таких системах. Правила я бы сформулировал так:
— Для каждого сервиса (веб-сервер, сервер БД, всякие фронт-енды, ускорители и т.п.) создаем отдельного пользователя, группа у всех одна (например, daemon). Право на исполнение дается только для тех файлов, которые фактически должны выполняться (а не просто chmod -R 755). Права «7» — полные права, стоит выдавать только на те каталоги/файлы, которые не могут иметь других разрешений. Как пример — каталог, куда мы принимаем файлы от пользователей (хотя сам по себе такой каталог — потенциальная брешь, подумайте почему).
— Использовать chroot для корневого каталога системы. Это надо на случай взлома — тогда хакер получит доступ только к веб-части нашего сервера, а не ко всему ему.
— Логировать самими скриптами все необычные действия пользователей. Иначе говоря, если все делалось правильно, и была отловлена попытка (не важно, случайная или злонамеренная) взлома, администратор должен быть уведомлен. Желательно так, чтобы пользователю ничего не отображалось при этом.
— Все php-сообщения об ошибках должны быть отключены. Ведь зная ошибки, хакеру по ним можно узнать структуру системы. А это облегчает задачу взлома. Тестировать систему, правда, я настоятельно рекомендую со всеми включенными ошибками. Идеальная ситуация — программа доведена до состояния, когда даже при всех включенных ошибках она не выводит даже Notice в любых случаях. Но даже в этом случае нужно отключать вывод ошибок, когда программа предоставляется пользователям.

С уязвимостями этого типа можно встретиться у не слишком озабоченных безопасностью хостинг-провайдеров. И скорее всего, вам не дадут это исправить, так как администратором системы будете не вы. Что тогда делать? Менять хостера. Просто и понятно.

В заключение, эта статья об безопасное программирование в php подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое безопасное программирование в php и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

A problem with the server request occurred единый урок что делать

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

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

Сейчас, каждый раз, когда нужно принять решение, я провожу простой мысленный эксперимент: «Готов ли я этим заниматься всю жизнь?».

— Готов ли я всю жизнь писать код для клиента, чья доменная область у меня вызывает отвращение? Ну тогда и начинать не стоит.

— Готов ли я всю жизнь делать проект, который не принесёт денег или морального удовлетворения? Нет.

— Готов ли я всю жизнь вести бизнес, который никогда не смасштабируется? Вряд ли.

Возможно метод работает потому, что вся жизнь — это настолько серьёзный коммитмент, что мозг выключается из ежедневной тупой рутины и начинает думать глобальнее. Может ещё почему-нибудь, не знаю. Но пустых и неважных проектов у меня стало гораздо меньше.

Код, который не работает

У меня недавно случилось озарение — я понял почему мне так знакомо чувство, которое возникает, когда я работаю с модулями nuxt.js. Вот взять модуль gtm, к примеру. Среди кучи других issues у него есть issue, которая так честно и называется — «модуль не работает». И что интересно — модуль и правда не работает.

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

Оказалось, что я не владел тайным знанием, которое на тот момент было у любого владельца жигулей — «рязанские стартеры не работают». Вот и купил по глупости.

В итоге стартер я купил белорусский, машина завелась. Но этот вопрос меня ещё долго не отпускал — ведь у этого завода в Рязани есть директор, главный инженер, руководитель ОТК, и ещё куча людей. Зачем все они делают стартеры, которые не работают?

Вот так же и с модулями накста. Ну вот реально чуваки постоянно что-то релизят, последний релиз в ноябре был. Какие-то фичи там даже добавили. Но вот зачем они делают релизы, которые не работают, а?

Как счастье программистов влияет на скорость разработки

Это ещё один доклад, который я прочитал этим летом на Barcamp Erevan 2021

Сноб: отчёт о первом этапе работ

Недавно мы закончили важную веху — запустили новый движок блогов на snob.ru. Задача была нетривиальной — за полгода мы перезапустили сайт высоконагруженного медиа с кучей легаси-кода. В этой заметке я расскажу, какие технологические решения мы приняли.

Задача

Сноб — это интернет-медиа, статьи в котором пишут не только штатные редакторы, но и внешние участники проекта: любой человек может приобрести подписку и завести собственную колонку на snob.ru. Коду проекта больше 10 лет, писали его разные люди на совершенно разных технологиях — в копилке есть и Zend Framework с MySQL и Django с PostgreSQL.

Нас с Саматом позвали, когда разработка была в плачевном состоянии: новые фичи уже не выкатывали, а починка одного бага приводила к появлению двух-трёх новых. Первым делом мы провели аудит: поговорили с представителями бизнеса и программистами, расковыряли исходный код и инфраструктуру. Проблемы оказались буквально везде: программисты были уставшими, инфраструктура — непрозрачной, а техдолг — огромным. Остановимся на техдолге чуть-чуть подробнее.

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

Кроме трёх бэкендов, у проекта есть ещё три фронтенда: старый от ПХП-движка, куча кода на Django и SPA на next.js, от которого предыдущая команда успела внедрить совсем небольшие части функциональности. Сверху всего этого стоит nginx, который одним ему ведомым образом решает, какая из этих систем будет отрабатывать запрос.

Поговорив с бизнесом, мы поняли, что самая большая проблема — в ПХП-движке на Zend Framework, который обслуживает блоги участников проекта. У бизнеса есть куча гипотез, которые можно проверить, но ни одного ПХП-шинка в команде не осталось, а внешних нанять невозможно — ни один нормальный программист не пойдет работать на 10-летний легаси без здоровой инженерной культуры.

Решение

Конечно, работать дальше с таким легаси нельзя — надо как можно скорее от него избавляться. Поскольку бизнес больше всего хотел решить проблему с блогами — с них мы и начнём. Мы поставили амбициозную цель — в конце работы оставить движок, которым пользуются и блогеры, и редакция: такое уже есть у Комитета, на их «Основе» работают все сайты издательства: vc, tjournal, dtf, и редакция там пишет посты так же, как и обычные пользователи.

Архитектура: однонаправленный поток данных

Решение мы начали с разработки архитектуры. В реальном мире существует только одно состояние у поста, комментария или пользователя — то, которое мы видим на экране. Проблема старой архитектуры в том, из-за ошибок проектирования это состояние в разных версиях размазано между совершенно несвязанными базами данных, и записывают его неаккуратные и несогласованные друг с другом системы. Представьте себе текст на листе бумаги, который одновременно пишут четыре первоклассника. Даже если они договорятся писать по одному слову за раз и вместе напишут связанный текст — вы никогда не поймёте, кто из них пропустил запятую или допустил смысловую ошибку.

Чтобы всегда знать, кто, зачем и когда записал данные, мы ввели единый источник правды. Пусть правдивое состояние пользователей и постов всегда находится у нас, и мы сами отвечаем за то, чтобы данные обновились в легаси-системах — транслируем все изменения в базы данных, задействуя как можно меньше старого кода. Всю синхронизацию систем друг с другом мы отрубаем — данные везде пишем только мы. Получается, что правда течёт сверху вниз, как в компонентах react.js — от нашей системы к легаси.

Экспорт данных мы построили на celery и RabbitMQ. Получилась полноценная асинхронная архитектура: все посты, которые нужно отправить в легаси, лежат в RabbitMQ, и удаляются оттуда только после того, как данные попадают во все БД. Если с трансляцией что-то пойдёт не так — мы узнаем об этом по переполненной очереди в RabbitMQ.

Инфраструктура

Инфраструктура на проекте — ещё один источник проблем. Там были разные физические серверы, конфигурация которых мутировала в течении десятилетия. ПХП-движок вообще крутился на FreeBSD — такой привет из начала 2000х! Плюс, у нас не было доступа к серверам — нельзя было даже зайти по ssh и посмотреть, что происходит.

Конечно, мы совсем не хотели делать ещё одну систему в этой непрозрачной мешанине — пара недель ушла бы только на попытки разобраться в конфигурации nginx. Решение пришло из мира фронтенда: там часто делают отдельный бекенд для фронтендеров, который который облегчает хождение в основные бекенды — маршрутизирует запросы между микросервисами, переформатирует ответы в удобный фронтенду формат, сохраняет данные авторизации — это называется BFF (Backend for Frontend). В нашем проекте уже был свой BFF — ведь нам нужно рендерить страницы на сервере, чтобы ускорить загрузку и быть понятными для поисковых роботов. Нам ничего не мешает маршрутизировать весь трафик snob.ru, включая статику через свой BFF — таким образом мы заберём полный контроль над трафиком.

Рядом с легаси-инфраструктурой мы развернули свою собственную, где на входе пользователей встречает комбинация из traefik и express.js. Теперь мы сами решаем, какая из систем обрабатывает каждый запрос — каждый новый сервис сам регистрируется в traefik и получает свою долю трафика. Если ни один сервис не хочет обрабатывать запрос — он уходит в express.js, где мы кодом решаем, обработать сервис своим фронтендом, или отдать его в легаси.

Чтобы не надорваться от нагрузки, поверх подключили Cloudflare, который раздаёт статику через свой CDN:

Заодно мы решили ещё одну проблему старой инфраструктуры — пропуская через себя весь трафик, мы наконец-то получили нормальную статистику происходящего в ней. Старый мониторинг строился на основе простой пинговалки в заббиксе: раз в минуту ходим в бекенд, если ответ не ок — шлём СМС админу. Чтобы понять, насколько это плохо — представьте ситуацию, в которой сайт падает от нагрузки и нормально обрабатывает только 50% пользователей. Если пинговалка попадает в ту половину пользователей, для которых сайт работает — админ об этом никогда не узнает. Наверное так же можно проверять работу ядерного реактора — если в контейнменте ничего не горит и не взрывается, значит реактор работает.

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

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

Как мы тестировали легаси

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

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

Единственный подход к тестированию, который применим в данном случае — канареечный: когда мы выкатываем всю систему в прод, но показываем её минимальному количеству пользователей. Примерно за три месяца до запуска у нас в продакшене появилась рабочая система — через новый интерфейс можно было написать пост, который появился бы во сразу всех базах. При желании можно было даже вывести этот пост на главную страницу snob.ru! Конечно, система была непроработанной — сначала можно было написать только заголовок и текст, указать автора: ни о каком сложном форматировании речи не шло.

Новая система была в продакшене за два месяца до дедлайна — это дало нам достаточно времени, чтобы решить все возможные интеграционные проблемы.

Запуск

Несмотря на то, что к дедлайну система была уже в продакшене, оставались самые опасные вещи — переписать DNS и включить боевой стриминг данных реальных пользователей. Опасность была в том, что старая система в совершенно непредсказуемых местах ходила сама в себя (помните вебхуки?). В коде были конструкции вида urlopen(»); ! Большая часть этих адресов оставалась работоспособной — почти весь трафик мы перенаправляли в легаси, обрабатывая самостоятельно только нужную нам часть. Но какие-то легаси-адреса всё равно сломалась — к примеру перестал работать старый механизм загрузки фотографий.

Поскольку, не переписывая DNS, мы не могли этого проверить — оставалось тестировать всё на боевой системе. Для этого мы собрали процесс, который позволяет быстро переключить трафик со старого кода на новый и обратно. Чтобы включить новый прод, достаточно было поменять адрес в Cloudflare и раскатать плейбук Ansible с обновлёнными настройками — весь процесс занимал около трёх минут. Чтобы ничего не забыть, сделали простой чеклист в бейскемпе:

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

Что дальше

Сейчас у нас есть движок, в котором решены все проблемы интеграции, а код и основные пользовательские сценарии покрыты тестами. Остаётся потихоньку забирать функциональность у легаси-кода и тушить старые части системы, переводя весь snob.ru на новые рельсы. До встречи через полгода 🙂

Команда

Никита Алёшников, бэкенд-разработчик
Фёдор Борщёв, технический директор
Михаил Бурмистров, ведущий фронтенд-разработчик
Самат Галимов, технический директор
Вячеслав Набатчиков, бэкенд-разработчик
Всеволод Скрипник, бэкенд-разработчик, руководитель проекта
Денис Сурков, бэкенд-разработчик
Владимир Тарановский, фронтенд-разработчик

Наш дорогой заказчик:

Марина Геворкян, генеральный директор
Валерия Тищенко, бренд-директор, продакт
Артём Алексеев, дизайнер
Мария Семенюк, директор по маркетингу
Виктория Владимирова, директор по дистрибуции
Борис Тавакалов, ведущий разработчик и хранитель знаний legacy-системы
Михаил Лавкин, системный администратор legacy-системы
Данияр Шекебаев, аналитик
Александр Тарасов, техподдержка

Как я веду телеграм-канал

Запись моего (невыспавшегося) выступления с Barcamp Erevan:

A problem with the server request occurred единый урок что делать

Для управления контейнерами предоставляется интерфейс командной строки bastille, позволяющий создавать и обновлять Jail-окружения на базе выбранной версии FreeBSD и выполнять такие операции с контейнерами, как запуск/остановка, сборка, клонирование, импорт/экспорт, преобразование, изменение настроек, управление сетевым доступом и задание ограничений потребления ресурсов. Допускается развёртывание в контейнере окружений c Linux (Ubuntu и Debian), выполняемых с использованием Linuxulator. Из расширенных возможностей поддерживается запуск типовых команд разом в нескольких контейнерах, вложенные шаблоны, снапшоты и резервное копирование. Корневой раздел в контейнере монтируется в режиме только для чтения.

В репозитории предлагается около 60 шаблонов для быстрого запуска контейнеров типовых приложений, в которых представлены программы для серверов (nginx, mysql, wordpress, asterisk, redis, postfix, elasticsearch, salt и т.п.), разработчиков (gitea, gitlab, jenkins jenkins, python, php, perl, ruby, rust, go, node.js, openjdk) и пользователей (firefox, сhromium). Поддерживается создание стеков контейнеров, позволяющих использовать один шаблон в другом. Окружение для запуска контейнеров может быть создано как на физических серверах или платах Raspberry Pi, так и в облачных окружениях AWS EC2, Vultr и DigitalOcean.

Проект развивает Кристер Эдвардс (Christer Edwards) из компании SaltStack, который в том числе сопровождает порты с системой централизованного управления конфигурацией Salt для FreeBSD. Кристер когда-то участвовал в разработке Ubuntu, был системным администраторм в GNOME Foundation и работал в компании Adobe (является автором открытого компанией Adobe инструментария Hubble для мониторинга и поддержания безопасности систем).

  • Добавлена поддержка клонирования jail-окружений, размещённых на разделах ZFS.
  • Добавлена команда «bastille list release -p» для показа промежуточных выпусков при выводе списка версий системы в окружениях.
  • Улучшено развёртывание окружений с Linux. Добавлена поддержка использования окружений Debian и Ubuntu для архитектуры Aarch64 (arm64).
  • Решены проблемы с созданием виртуальных сетей для объединения контейнеров с использованием подсистемы VNET.
  1. Главная ссылка к новости
  2. OpenNews: Runj — OCI-совместимый инструментарий для управления контейнерами на базе FreeBSD jail
  3. OpenNews: Уязвимости во FreeBSD, позволяющие обойти ограничения jail-окружений
  4. OpenNews: Первый выпуск ClonOS, платформы для управления виртуальными окружениями
  5. OpenNews: Релиз FreeBSD 13.0
  6. OpenNews: Представлен Qjail, инструмент для упрощения управления FreeBSD Jail

Обсуждение (168 +15) | Тип: Программы |

Платформа webOS была изначально разработана компанией Palm в 2008 году и использовалась на смартфонах Palm Pre и Pixie. В 2010 году после поглощения компании Palm платформа перешла в руки Hewlett-Packard, после чего HP пыталась использовать данную платформу в своих принтерах, планшетах, ноутбуках и ПК. В 2012 году компания HP анонсировала перевод webOS в независимый открытый проект и в 2013 году начала открытие исходных текстов его компонентов. В 2013 году платформа была выкуплена у Hewlett-Packard компанией LG и теперь применяется на более чем 70 миллионах телевизоров и потребительских устройств LG. В 2018 году был основан проект webOS Open Source Edition, через который компания LG попыталась вернуться к открытой модели разработки, привлечь других участников и расширить спектр поддерживаемых в webOS устройств.

Системное окружение webOS формируется с использованием инструментария и базовых пакетов OpenEmbedded, а также сборочной системы и набора метаданных от проекта Yocto. Ключевыми компонентами webOS являются менеджер системы и приложений (SAM, System and Application Manager), отвечающий за выполнение приложений и сервисов, и Luna Surface Manager (LSM), формирующий интерфейс пользователя. Компоненты написаны с использованием фреймворка Qt и браузерного движка Chromium.

Отрисовка осуществляется через композитный менеджер, применяющий протокол Wayland. Для разработки пользовательских приложений предлагается использовать web-технологии (CSS, HTML5 и JavaScript) и фреймворк Enact, основанный на React, но возможно и создание программ на С и C++ с интерфейсом на базе Qt. Пользовательская оболочка и встроенные графические приложения в основном реализованы как нативные программы, написанные с использованием технологии QML. По умолчанию предлагается оболочка Home Launcher, оптимизированная для управления с сенсорных экранов и предлагающая концепцию сменяющих друг друга карт (вместо окон).

Для хранения данных в структурированном виде с использованием формата JSON применяется хранилище DB8, использующее в качестве бэкенда БД LevelDB. Для инициализации используется bootd на основе systemd. Для обработки мультимедийного контента предлагаются подсистемы uMediaServer и Media Display Controller (MDC), в качестве звукового сервера применяется PulseAudio. Для автоматического обновления прошивки применяется OSTree и атомарная замена разделов (создаются два системных раздела, один из которых является активным, а второй используется для копирования обновления).

  • Добавлена поддержка клавиатуры и мыши. Композитный менеджер LSM (Luna Surface Manager) адаптирован для управления и организации ввода при помощи клавиатуры и мыши, а не только сенсорного экрана. Например, к мобильному устройству или телевизору на базе webOS можно подключить клавиатуру и мышь для использования в роли рабочей станции. Также добавлена поддержка клавиатурных комбинаций для быстрого вызова настроек (F1) и интерфейса запуска программ (кнопка Start или Windows).
  • Увеличена производительность отрисовки и повышено качество анимации в приложениях, использующий библиотеку Qt.
  • В домашний экран (Home Launcher) добавлены компоненты и ресурсы для кастомизации QML-приложений.
  • В сервис управления звуком audiod добавлена поддержка отслеживания громкости.
  • Предложен набор примеров приложений и решений на базе webOS.
  • Браузерный движок обновлён до Chromium 91 (ранее использовался Chromium 87). В web-движке реализована поддержка GPU vsync для Wayland.
  • В эмуляторе включено сжатие раздела подкачки (zram) и обработки нехватки памяти (oomd).
  1. Главная ссылка к новости
  2. OpenNews: Выпуск платформы webOS Open Source Edition 2.14
  3. OpenNews: Выпуск платформы webOS Open Source Edition 2
  4. OpenNews: Компания LG опубликовала операционную систему webOS Open Source Edition
  5. OpenNews: Обновление мобильной платформы LuneOS, продолжившей развитием webOS
  6. OpenNews: Компания LG выкупила мобильную платформу webOS у Hewlett-Packard и намерена использовать её в телевизорах

Обсуждение (47 +10) | Тип: Программы |

Обновление Ubuntu Touch OTA-22 сформировано для смартфонов BQ E4.5/E5/M10/U Plus, Cosmo Communicator, F(x)tec Pro1, Fairphone 2/3, Google Pixel 2XL/3a, Huawei Nexus 6P, LG Nexus 4/5, Meizu MX4/Pro 5, Nexus 7 2013, OnePlus 2/3/5/6/One, Samsung Galaxy Note 4/S3 Neo+, Sony Xperia X/XZ/Z4, Vollaphone, Xiaomi Mi A2/A3, Xiaomi Poco F1, Xiaomi Redmi 3s/3x/3sp/4X/7, Xiaomi Redmi Note 7/7 Pro. Отдельно, без метки «OTA-21», будут подготовлены обновления для устройств Pine64 PinePhone и PineTab. По сравнению с прошлой версией добавлена поддержка смартфонов Asus Zenfone Max Pro M1, Xiaomi Poco M2 Pro, Google Pixel 2 и Google Pixel 3a XL.

Обсуждение (135 +16) | Тип: Программы |

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

Cудя по всему, изменение имеет связь с соглашениями о выплате отчислений за направление поискового трафика, которые приносят львиную долю доходов Mozilla. Например, в 2020 году доля доходов Mozilla от сотрудничества с поисковыми системами составила 89%. В англоязычной сборке Firefox по умолчанию предлагается Google, в русскоязычной и турецкой — Yandex, а в сборках для Китая — Baidu. Сделка с компанией Google о передаче поискового трафика, которая приносит около 400 млн долларов в год, в 2020 году была продлена до августа 2023 года.

В 2017 году компания Mozilla уже имела опыт прекращения поставки Yahoo в качестве поисковой системы по умолчанию из-за нарушения условий договора с сохранением всех причитающихся выплат за весь период действия соглашения. С осени 2021 года до конца января 2022 действовал эксперимент, в соответствии с которым 1% пользователей Firefox был переведён на использование по умолчанию поисковой системы Microsoft Bing. Возможно и на этот раз один из поисковых партнёров перестал удовлетворять требованиям Mozilla в отношении качества поиска и соблюдения конфиденциальности, и Bing рассматривается в качестве варианта для его замены.

  1. Главная ссылка к новости
  2. OpenNews: Mozilla прекращает поддержку поисковых дополнений на базе технологии OpenSearch
  3. OpenNews: В Firefox проводится эксперимент по использованию поисковой системы Bing по умолчанию
  4. OpenNews: Компания Mozilla опубликовала финансовый отчёт за 2020 год
  5. OpenNews: Mozilla и Yahoo обменялись судебными исками
  6. OpenNews: В Chromium и браузерах на его основе ограничено удаление поисковых систем

Обсуждение (212 –27) | Тип: Тема для размышления |

Для обеспечения совместимости с существующими расширениями в составе GNOME Shell будут оставлены внутренние копии Cogl и Clutter, которые продолжат поставляться в обозримом будущем. Разработчикам приложений, в которых используется GTK3 вместе с Clutter, Clutter-GTK или Clutter-GStreamer рекомендовано перевести свои программы на GTK4, libadwaita и GStreamer. Если это невозможно, то следует отдельно добавить Cogl, Clutter, Clutter-GTK и Clutter-GStreamer в зависимости к пакетам в формате Flatpak, так как они будут исключены из основного GNOME runtime.

Проект Clutter уже давно находится в стагнации и не развивается — последний значительный выпуск 1.26 был сформирован в 2016 году, а последнее корректирующее обновление было предложено в начале 2020 года. Функциональность и развиваемые в Clutter идеи теперь обеспечиваются фреймворком GTK4, libadwaita, GNOME Shell и композитным сервером Mutter.

Напомним, что библиотека Clutter ориентирована на обеспечение отрисовки пользовательского интерфейса. Функции библиотеки Clutter ориентированы на активное использование анимации и визуальных эффектов, что позволяет применять при создании обычных GUI приложений методы, используемые при разработке игр. При этом сама библиотека напоминает игровой движок, в котором максимальное число операций выносится на плечи GPU, а для создания сложного интерфейса пользователя требуется написание минимума кода. Библиотека в основном использовалась с OpenGL, но также может работать поверх GLib, GObject, GLX, SDL, WGL, Quartz, EGL и Pango. Имеются биндинги для языков Perl, Python, C#, C++, Vala и Ruby.

  1. Главная ссылка к новости
  2. OpenNews: Выпуск графического тулкита GTK+ 3.20 и графической библиотеки Clutter 1.26
  3. OpenNews: Релиз графической библиотеки Clutter 1.18.0
  4. OpenNews: Выпуск графического тулкита GTK 4.0
  5. OpenNews: Доступен графический тулкит GTK 4.6
  6. OpenNews: Выпуск библиотеки Libadwaita 1.0 для создания интерфейсов в стиле GNOME

Обсуждение (184 +8) | Тип: К сведению |

Сервис Code scanning позволяет выявлять уязвимости на ранней стадии разработки через сканирование каждой операции «git push» на предмет потенциальных проблем. Результат прикрепляется непосредственно к pull-запросу. Ранее проверка осуществлялась с использованием движка CodeQL, анализирующего шаблоны с типовыми примерами уязвимого кода (CodeQL позволяет сформировать шаблон уязвимого кода для выявления наличия подобной уязвимости в коде других проектов). Новый движок, использующий машинное обучение, может определять ранее не известные уязвимости так как он не привязан к перебору шаблонов кода, описывающих конкретные уязвимости. Ценой подобной возможности является увеличение числа ложных срабатываний по сравнению с проверками на основе CodeQL.

  1. Главная ссылка к новости
  2. OpenNews: GitHub намерен сканировать репозитории на предмет запрещённого содержимого
  3. OpenNews: GitHub запустил совместный проект для выявления уязвимостей в открытом ПО
  4. OpenNews: Intel открыл код системы машинного обучения ControlFlag для выявления ошибок в коде
  5. OpenNews: GitHub ввёл в строй сервис для выявления уязвимостей в коде
  6. OpenNews: GitHub добавил поддержку отслеживания уязвимостей в проектах на языке Rust

Обсуждение (62 –6) | Тип: К сведению |

Первая уязвимость (CVE-2021-44730) позволяет совершить атаку через манипуляцию жёсткими ссылками, но требует отключения системной защиты жёстких ссылок (установки sysctl fs.protected_hardlinks в 0). Проблема вызвана некорректной проверкой местоположения исполняемых файлов вспомогательных программ snap-update-ns и snap-discard-ns, запускаемых с правами root. Путь к данным файлам вычислялся в функции sc_open_snapd_tool() на основе собственного пути из /proc/self/exe, что позволяет создать жёсткую ссылку на snap-confine в своём каталоге и разместить в этом каталоге свои варианты утилит snap-update-ns и snap-discard-ns. После запуска по жёсткой ссылке snap-confine с правами root запустит из текущего каталога файлы snap-update-ns и snap-discard-ns, подставленные атакующим.

Вторая уязвимость вызвана состоянием гонки и может быть эксплуатирована в конфигурации Ubuntu Desktop по умолчанию. Для успешной работы эксплоита в Ubuntu Server требуется выбор при установке одного из пакетов из секции «Featured Server Snaps». Состояние гонки проявляется в функции setup_private_mount(), вызываемой во время подготовки пространства имён точек монтирования для пакета snap. Данная функция создаёт временный каталог «/tmp/snap.$SNAP_NAME/tmp» или использует уже существующий для bind-монтировния в него каталогов для пакета в формате snap.

Так как имя временного каталога предсказуемо, атакующий может подменить его содержимое на символическую ссылку в момент после проверки владельца, но перед обращением к системному вызову mount. Например, можно создать в каталоге /tmp/snap.lxd символическую ссылку «/tmp/snap.lxd/tmp», указывающую на произвольный каталог, и вызов mount() последует за символической ссылкой и примонтирует каталог в пространстве имён snap. Подобным образом можно примонтировать своё содержимое в /var/lib и через замену /var/lib/snapd/mount/snap.snap-store.user-fstab организовать монтирование своего каталога /etc в пространстве имён snap-пакета для организации загрузки своей библиотеки с правами root через замену /etc/ld.so.preload.

Отмечается, что создание эксплоита оказалось нетривиальной задачей, так как утилита snap-confine написана с использованием приёмов безопасного программирования (snapd написан на языке Go, но для snap-confine использован язык Си), имеет защиту на основе профилей AppArmor, производит фильтрацию системных вызовов на основе механизма seccomp и применяет для изоляции пространство имён для монтирования. Тем не менее, исследователям удалось подготовить рабочий эксплоит для получения прав root в системе. Код эксплоита будет опубликован через несколько недель, после того как пользователи установят предоставленные обновления.

Дополнение: Сформирован выпуск snapd 2.54.3, в котором кроме вышеупомянутых проблем устранена ещё одна уязвимость (CVE-2021-4120), позволяющая при установке специально оформленных snap-пакетов выполнить подстановку произвольных правил AppArmor и обойти выставленные для пакета ограничения доступа.

  1. Главная ссылка к новости
  2. OpenNews: Уязвимость в snapd и flatpak, позволяющая обойти режим изоляции
  3. OpenNews: Уязвимость в snapd, позволяющая получить root-привилегии в системе
  4. OpenNews: Критическая уязвимость в sudo, позволяющая получить привилегии root
  5. OpenNews: Root-уязвимость в ядре Linux и отказ в обслуживании в systemd
  6. OpenNews: Критическая уязвимость в PolKit, позволяющая получить root-доступ в большинстве дистрибутивов Linux

Обсуждение (140 +18) | Тип: Проблемы безопасности |

  • Решена проблема, приводящая к сбою при попытке загрузки из TikTok видео, выбранного на странице с профилем пользователя.
  • Устранена ошибка, не дающая просматривать видео из сервиса Hulu в режиме «картинка в картинке».
  • Устранён сбой, приводящий к нарушению отрисовки при использовании антивируса WebRoot SecureAnywhere.
  • Решена проблема с выводом после запуска страницы восстановления сеанса, когда в этом нет необходимости.
  1. Главная ссылка к новости
  2. OpenNews: Релиз Firefox 97
  3. OpenNews: Wayland использует менее 10% Linux-пользователей Firefox
  4. OpenNews: Обновление Firefox 96.0.3 с устранением проблемы с отправкой лишней телеметрии
  5. OpenNews: В ночных сборках Firefox по умолчанию включена поддержка Wayland
  6. OpenNews: В Firefox добавлены режимы тёмного и светлого отображения сайтов. Обновление Firefox 94.0.2

Обсуждение (173 +9) | Тип: Программы |

Проблема вызвана некорректной проверкой поступивших от пользователя параметров в обработчике оформления заказа. Детали эксплуатации уязвимости пока не раскрываются, исправление сводится к очистке символов в параметрах запроса по регулярному выражению «/>/».

Уязвимость проявляется в выпусках с 2.3.3-p1 по 2.3.7-p2 и с 2.4.0 по 2.4.3-p1 включительно. Исправление доступно в форме патча (новые выпуски с исправлением пока не сформированы). Пользователям Magento рекомендуется срочно установить патч, так как в Сети уже зафиксированы отдельные случаи использования рассматриваемой уязвимости для совершения атак на интернет-магазины.

Дополнение: Исследователям из компании Positive Technologies удалось выяснить в чём суть уязвимости и подготовить рабочий эксплоит, позволяющий получить полный доступ к серверу с правами пользователя, под которым выполняется Magento. Дополнительно отмечается, что предложенный в патче метод защиты лишь устраняет частный случай проблемы и его можно обойти и атаковать систему другими способами, без указания заблокированных конструкций в запросе. В ответ компания Adobe выпустила новый вариант патча.

  1. Главная ссылка к новости
  2. OpenNews: Критические уязвимости в платформе электронной коммерции Magento
  3. OpenNews: Релиз Messor, децентрализованной системы для обнаружения вторжений
  4. OpenNews: В платформе электронной коммерции Magento устранено 75 уязвимостей
  5. OpenNews: Проект Snuffleupagus развивает PHP-модуль для блокирования уязвимостей
  6. OpenNews: Более 5900 интернет-магазинов поражены вредоносным ПО для перехвата номеров кредитных карт

Обсуждение (20 +6) | Тип: Проблемы безопасности |

В программу вознаграждений введены дополнительные бонусные выплаты размером 20 тысяч долларов за 0-day уязвимости, за эксплоиты не требующие включения поддержки пространства имён идентификаторов пользователей (user namespaces) и за демонстрацию новых методов эксплуатации. Базовая выплата за демонстрацию в kCTF рабочего эксплоита составляет 31337 долларов (базовая выплата производится участнику, первому продемонстрировавшему рабочий эксплоит, но бонусные выплаты могут быть применены и для последующих эксплоитов для той же уязвимости).

В сумме с учётом бонусов максимальный размер вознаграждения за 1-day эксплоит (проблемы, выявленные на основе анализа исправлений ошибок в кодовой базе, явно не помеченных как уязвимости) может доходить до 71337 долларов (было $31337), а за 0-day (проблемы, для которых ещё нет исправления) — 91337 долларов (было $50337). Программа выплат будет действовать до 31 декабря 2022 года.

Отмечается, что за прошлые три месяца Google обработал 9 заявок с информацией об уязвимостях, по которым было выплачено 175 тысяч долларов. Принявшими участие исследователями было подготовлено пять эксплоитов для 0-day уявзимостей и два для 1-day уязвимостей. По трём уже исправленным в ядре Linux проблемам (CVE-2021-4154 в cgroup-v1, CVE-2021-22600 в af_packet и CVE-2022-0185 в VFS) информация раскрыта публично (указанные проблемы до этого уже были выявлены через Syzkaller и для двух проблем в ядро были добавлены исправления).

  1. Главная ссылка к новости
  2. OpenNews: HackerOne реализовал выплату вознаграждений за выявление уязвимостей в открытом ПО
  3. OpenNews: В 2019 году Google выплатил 6.5 млн долларов вознаграждений за выявление уязвимостей
  4. OpenNews: Компания Intel представила программу выплаты вознаграждений за поиск уязвимостей
  5. OpenNews: Европейская комиссия учредила вознаграждение за поиск ошибок и уязвимостей в СПО
  6. OpenNews: Google увеличил размер вознаграждений за выявление уязвимостей в Chrome, Chrome OS и Google Play

Обсуждение (30 +13) | Тип: Проблемы безопасности |

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

Дополнительно можно отметить проект DepixHMM, в рамках которого подготовлен вариант утилиты Depix, переведённый на алгоритм на базе скрытой марковской модели, благодаря которому удалось добиться повышения точности воссоздания символов.

  1. Главная ссылка к новости
  2. OpenNews: Depix, утилита для воссоздания пикселизированных паролей на скриншотах
  3. OpenNews: Google представил технику реконструкции пикселизированных изображений
  4. OpenNews: В рамках проекта subpixel подготовлена нейронная сеть для восстановления изображений
  5. OpenNews: Facebook предложил новый метод восстановления забытых паролей
  6. OpenNews: Google открыл код SyntaxNet, системы восприятия естественного языка

Обсуждение (51 +13) | Тип: Программы |

Proton позволяет напрямую запускать в Linux-клиенте Steam игровые приложения, поставляемые только для Windows. Пакет включает в себя реализацию DirectX 9/10/11 (на базе пакета DXVK) и DirectX 12 (на базе vkd3d-proton), работающие через трансляцию вызовов DirectX в API Vulkan, предоставляет улучшенную поддержку игровых контроллеров и возможность использования полноэкранного режима независимо от поддерживаемых в играх разрешений экрана. Для увеличения производительности многопоточных игр поддерживаются механизмы «esync» (Eventfd Synchronization) и «futex/fsync».

  • Выполнена синхронизация с выпуском Wine 7.0 (прошлая ветка основывалась на wine 6.3). Из Proton в upstream перенесены накопившиеся специфичные патчи, которые теперь входят в основной состав Wine. До версии 1.9.4 обновлена прослойка DXVK, транслирующая вызовы в API Vulkan. VKD3D-Proton, ответвление от vkd3d, созданное Valve для улучшения поддержки Direct3D 12 в Proton, обновлено до версии 2.5-146. Пакет wine-mono обновлён до версии 7.1.2.
  • Добавлена поддержка локального декодирования видео в формате H.264.
  • Добавлена поддержка Linux-модуля античит-системы Easy Anti-Cheat (EAC), используемой для обеспечения запуска Windows-сброк игр с включённым античитом. Easy Anti-Cheat позволяет запустить сетевую игру в специальном режиме изоляции, верифицирующим целостность игрового клиента и выявляющим вклинивание в работу процесса и манипуляции с его памятью.
  • Добавлена поддержка игр:
    • Anno 1404
    • Call of Juarez
    • DCS World Steam Edition
    • Disgaea 4 Complete+
    • Dungeon Fighter Online
    • Epic Roller Coasters XR
    • Eternal Return
    • Forza Horizon 5
    • Gravity Sketch VR
    • Monster Hunter Rise
    • NecroVisioN
    • Nights of Azure
    • Oceanhorn: Monster of the Uncharted Seas
    • Order of War
    • Persona 4 Golden
    • Resident Evil 0
    • Resident Evil Revelations 2
    • Rocksmith 2014 Edition
    • SCP: Secret Laboratory
    • Wargroove
    • Wartales
    • Yakuza 4 Remastered
    • Sea of Thieves
    • Beacon
    • Mount & Blade II: Bannerlord
    • Age of Empires IV
    • Marvel Avengers
    • Runescape stability
    • Castlevania Advance Collection
    • Paradox Launcher
    • Pathfinder: Wrath of the Righteous
    • Far Cry
    • Doom Eternal
    1. Главная ссылка к новости
    2. OpenNews: В Linux обеспечена работа 80% из 100 наиболее популярных в Steam игр
    3. OpenNews: Компания Valve выпустила Proton 6.3-8, пакет для запуска Windows-игр в Linux
    4. OpenNews: Компания Valve добавила поддержку AMD FSR в Wayland-композитор Gamescope
    5. OpenNews: Компания Valve опубликовала CAD-файлы корпуса игровой консоли Steam Deck
    6. OpenNews: Стабильный релиз Wine 7.0

    Обсуждение (107 +64) | Тип: Программы |

    В отличие от редакции LibreOffice Online сборка на базе WebAssembly позволяет запустить в браузере офисный пакет целиком, т.е. весь код запускается на стороне клиента, в то время как LibreOffice Online выполняется и обрабатывает все действия пользователя на сервере, а в браузер клиента лишь транслируется интерфейс. Вынос основной части LibreOffice на сторону браузера позволит сформировать облачную редакцию для совместной работы, снимающую нагрузку с серверов, минимизирующую отличия от настольного LibreOffice, упрощающую масштабирование, способную работать в offline-режиме, а также допускающую организацию P2P-взаимодействия между пользователями и сквозное шифрование данных на стороне пользователя. Среди планов также отмечается создание на базе LibreOffice виджета для интеграции полноценного редактора текста на страницы.

    1. Главная ссылка к новости
    2. OpenNews: В GTK 4 будет переработан бэкенд, отображающий интерфейс через web-браузер
    3. OpenNews: Доступен CODE 6.4, дистрибутив для развёртывания LibreOffice Online
    4. OpenNews: Collabora и ownCloud представили CODE, дистрибутив для развёртывания LibreOffice Online
    5. OpenNews: Выпуск офисного пакета LibreOffice 7.3
    6. OpenNews: Обновление LibreOffice 7.1.3. Начало интеграции поддержки WebAssembly в LibreOffice

    Обсуждение (151 +21) | Тип: К сведению |

    Система поставляется бесплатно, а исходные тексты распространяются под свободной лицензией Apache 2.0. В настоящее время для начального тестирования предлагаются экспериментальные сборки, имеющие статус версий для разработчиков и доступные после заполнения регистрационной формы (манифест с файлом для загрузки). В течение нескольких месяцев планируется выпустить первый стабильный релиз Chrome OS Flex, пригодный для повсеместного использования.

    Для развёртывания Chrome OS Flex может быть использована загрузка по сети или загрузка с USB-накопителя. При этом вначале предлагается опробовать новую систему без замены ранее установленной ОС, загрузившись с USB-накопителя в Live-режиме. После оценки пригодности нового решения можно осуществить замену имеющейся ОС через загрузку по сети или с USB-накопителя. Заявленные системные требования: 4 ГБ ОЗУ, x86-64 CPU Intel или AMD и внутреннее хранилище 16 ГБ. Все специфичные для пользователя настройки и приложения синхронизируются при первом входе.

    Продукт создан с использованием наработок купленной в 2020 году компании Neverware, выпускавшей дистрибутив CloudReady, представляющий собой сборку Chromium OS для устаревшего оборудования и устройств, изначально не укомплектованных Chrome OS. Во время поглощения, Google пообещал интегрировать наработки CloudReady в основной состав Chrome OS. Итогом проделанной работы стала редакция Chrome OS Flex, поддержка которой будет осуществляться аналогично поддержке Chrome OS. Пользователи дистрибутива CloudReady смогут обновить свои системы до Chrome OS Flex.

    Операционная система Chrome OS основана на ядре Linux, системном менеджере upstart, сборочном инструментарии ebuild/portage, открытых компонентах и web-браузере Chrome. Пользовательское окружение Chrome OS ограничивается web-браузером, а вместо стандартных программ задействованы web-приложения, тем не менее, Chrome OS включает в себя полноценный многооконный интерфейс, рабочий стол и панель задач. На базе механизмов виртуализации предоставляются прослойки для выполнения программ из Android и Linux.

    Как и в Chrome OS в редакции Flex применяются верифицированный процесс загрузки, интеграция с облачными хранилищами, автоматическая установка обновлений, Google Assistant, хранение пользовательских данных в зашифрованном виде, механизмы предотвращения утечки данных в случае потери/кражи устройства. Предоставляются единые с Chrome OS средства для централизованного управления системами — настройка политик доступа и управление обновлениями может осуществляться при помощи консоли Google Admin.

    Обсуждение (241 +1) | Тип: Программы | Интересно

    Система реализует полный цикл от сбора данных, их обработки и преобразования, анализа этих данных для обнаружения проблем, и заканчивая хранением этих данных, визуализацией и рассылкой оповещений с использованием правил эскалаций. Также система предоставляет гибкие возможности расширения методов сбора данных и оповещений, а также возможности автоматизации через мощный API. Единый веб-интерфейс реализует централизованное управление конфигурациями мониторинга и ролевым распределением прав доступа различным группам пользователей. Код проекта распространяется под лицензией GPLv2.

    Основныеулучшенияверсии 6.0 LTS:

    • Поддержка масштабируемой ресурсно-сервисной модели, которая включает в себя SLA отчёты и виджет, оповещения по факту изменения статуса сервиса, гибкая система прав, сложные правила вычисления статуса сервисов, мапирование проблем с сервисами по тегам и масштабируемость до более 100.000 сервисов
    • Поддержка новых виджетов «Top hosts», «Item value», «Geo map»
    • Мониторинг Kubernetes из коробки
    • Поддержка мониторинга параметров SSL и TLS сертификатов
    • Набор функций машинного обучения для обнаружение аномалий и baseline мониторинга trendstl(), baselinewma() и baselinedev()
    • Поддержка загрузки сторонних плагинов для Zabbix агента
    • Расширенный мониторинг VMWare
    • Поддержка текстовых вычисляемых метрик
    • Минимизация зависимостей между шаблонами, все официальные шаблоны стали плоскими и без сторонних зависимостей
    • Возможность выключения сообщений «escalation cancelled»
    • Поддержка сохранения статуса мониторинга файлов на агенте для высоконадёжного мониторинга лог файлов
    • Возможность обновления списка пользовательских метрик без перезапуска агента
    • Использование уникальных ключей в исторических таблицах для уменьшения объёма данных
    • Поддержка макросов для показа триггерного выражения с раскрытыми значениями
    • Поддержка root-cause анализа включая макросы для алертов
    • Улучшена безопасность и надёжность мониторинга за счёт:
      • поддержки политики сложности паролей и сравнения со словарём
      • высокопроизводительного и улучшенного auditlog, в том числе и на стороне Zabbix сервера
      • возможности для управления процессами сервера, прокси и агентов из командной строки
    • Улучшена производительность и бесперебойности за счёт:
      • поддержки надёжного и удобного в эксплуатации HA Cluster для Zabbix сервера
      • выделения ODBC поллеров в отдельный класс с возможностью контролировать их количество
      • улучшения производительности и уменьшение использования памяти при синхронизации конфигурации на прокси
      • поддержки конфигураций прокси до 16GB
    • Другие значительные улучшения:
      • Поддержка utf8mb4 для MySQL и MariaDB
      • Поддержка компрессии для WEB мониторинга
      • Новый метод API для очистки истории history.clear
      • Поддержка таймаута для утилит zabbix_sender и zabbix_get
      • Поддержка дополнительных HTTP методов для Web хуков
      • Расширение существующих и поддержка новых метрик на стороне агента: agent.variant, system.hostname, docker.container_stats, vmware.hv.sensors.get, vmware.hv.maintenance
      • Новые триггерные функции changecount(), rate(), bucket_rate_foreach(), bucket_percentile(), histogram_quantile(), monoinc() и monodec()
      • Поддержка новых функций агрегирования count, exists_foreach and item_count
      • Поддержка новых операторов соответствие для Prometheus != и !~
      • Многочисленные изменения для упрощения интерфейса
      • Сохраняемые и быстрые фильтры в «Latest data» и для графиков, упрощение навигации
    • Новые шаблоны и интеграции:
      • новые шаблонные решения для мониторинга pfSense, Kubernetes, Oracle, Cisco Meraki, Docker, Zabbix Server Health, VeloCloud, MikroTik, InfluxDB, Travis CI, Github, TiDB, SAF Tehnika, GridGain, Nginx+, jBoss, CloudFlare
      • новый набор тегов для всех официальных шаблонов
    • Zabbix предлагает интеграцию с:
      • платформами службы поддержки Jira, Jira ServiceDesk, Redmine, ServiceNow, Zendesk, OTRS, Zammad, Solarwinds Service Desk, TOPdesk, SysAid, iTOP, ManageEngine Service Desk
      • системами оповещения пользователей Slack, Pushover, Discord, Telegram, VictorOps, Microsoft Teams, SINGNL4, Mattermost, OpsGenie, PagerDuty, iLert, Signal, Express.ms, Rocket.Chat
      • полный список из более 500 шаблонов и интеграций
    • Linux дистрибутивов RHEL, CentOS, Debian, SuSE, Ubuntu, Raspbian для различных архитектур
    • систем виртуализации на базе VMWare, VirtualBox, Hyper-V, XEN
    • Docker
    • агенты для всех платформ включая MacOS и пакеты MSI для Windows агентов
    1. Главная ссылка к новости
    2. OpenNews: Выпуск системы мониторинга Zabbix 5.4
    3. OpenNews: Новая версия системы мониторинга Monitorix 3.14.0
    4. OpenNews: Уязвимость в интерфейсе мониторинга Icinga Web
    5. OpenNews: В рамках проекта Glaber создан форк системы мониторинга Zabbix
    6. OpenNews: Выпуск системы мониторинга Cacti 1.2.0

    Обсуждение (130 +30) | Автор: alexvl | Тип: Программы |

    Из других опасных уязвимостей отмечается переполнение буфера в системе для работы с группами вкладок, целочисленное переполнение в IPC-фреймворке Mojo, а также обращения к освобождённым областям памяти в ANGLE (прослойка для трансляции вызовов OpenGL ES в OpenGL, Direct3D 9/11, Desktop GL и Vulkan), коде для взаимодействия с GPU и реализациях API File Manager и API Webstore.

    1. Главная ссылка к новости
    2. OpenNews: Релиз Chrome 98
    3. OpenNews: Обновление Chrome 97.0.4692.99 с устранением критической уязвимости
    4. OpenNews: Обновление Chrome 96.0.4664.110 с устранением критической и 0-day уязвимостей
    5. OpenNews: Обновление Chrome 94.0.4606.71 с устранением 0-day уязвимостей
    6. OpenNews: Разработчики Chrome экспериментируют с языком программирования Rust

    Обсуждение (37 +8) | Тип: Проблемы безопасности |

    Пользовательское окружение основано на Xfce4 с оконным менеджером OpenBox вместо xfwm. В поставку входят звуковые редакторы Ardour, ArdourVST, Harrison, Mixbus, система 3D-проектирования Blender, редакторы видео Cinelerra, Openshot, LiVES и инструменты для преобразования мультимедийных форматов файлов. Для коммутации звуковых устройств предлагается JACK Audio Connection Kit (используется JACK1/Qjackctl, а не JACK2/Cadence). Дистрибутив снабжён подробным иллюстрированным руководством (PDF, 74 стр.)

    Обсуждение (26 +11) | Тип: Программы |

    Целью разработки OBS Studio было создание переносимого варианта приложения Open Broadcaster Software (OBS Classic), не привязанного к платформе Windows, поддерживающего OpenGL и расширяемого через плагины. Отличием также является использование модульной архитектуры, подразумевающей разделение интерфейса и ядра программы. Поддерживается перекодирование исходных потоков, захват видео во время игр и стриминг в Twitch, Facebook Gaming, YouTube, DailyMotion, Hitbox и другие сервисы. Для обеспечения высокой производительности возможно использование механизмов аппаратного ускорения (например, NVENC и VAAPI).

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

    • Обеспечена интеграция с устройствами AJA, которые теперь могут использоваться в качестве источника и устройства вывода видео.
    • Обновлена версия движка Chromium (c версии 75 до 95) в реализации источника вещания на базе браузера (Browser Source).
    • Добавлена возможность установки разных режимов смешивания источников вещания через контекстное меню, вызываемое при нажатии правой кнопки мыши.
    • Добавлены экспериментальные кодировщики AOM AV1 и SVT-AV1 для формата AV1.
    • Добавлены горячие клавиши для обновления источника вещания на базе браузера, поиска фильтров и выявления дубликатов.
    • Добавлена поддержка протокола RIST (Reliable Internet Stream Transport).
    • Добавлен фреймворк для обеспечения фоновой обработки горячих клавиш в окружениях на базе Wayland.
    • Повышена стабильность захвата экрана через PipeWire на системах с несколькими GPU.
    • Добавлена настройка для автоматического скрытия элементов интерфейса программы OBS при захвате содержимого экрана.
    • Для платформы Linux предоставлена официальная поддержка пакетов в формате Flatpak.
    1. Главная ссылка к новости
    2. OpenNews: Выпуск системы потокового видеовещания OBS Studio 27.1
    3. OpenNews: В TikTok Live Studio выявлено заимствование кода OBS, нарушающее лицензию GPL
    4. OpenNews: Выпуск системы потокового видеовещания OBS Studio 27.0
    5. OpenNews: Выпуск серверов для потокового вещания Roc 0.1, Ant 1.7 и Red5 1.1.1
    6. OpenNews: FairMOT, система для быстрого отслеживания нескольких объектов на видео

    Обсуждение (59 +30) | Тип: Программы |

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

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

    • В систему непрерывной интеграции на базе поддерживаемого компанией Intel бота 0DAY/LKP добавлена проверка компонентов для поддержки Rust и началась публикация отчётов о тестировании. Готовится интеграция поддержки Rust в систему автоматизированного тестирования KernelCI. Тестирование на базе GitHub CI переведено на использование контейнеров.
    • Модули ядра на Rust избавлены от необходимости определения crate-атрибутов «#![no_std]» и «#![feature(. )]».
    • Добавлена поддержка единичных сборочных целей (.o, .s, .ll и .i).
    • В рекомендациях по оформлению кода определены правила в отношении разделения комментариев («//») и документирования кода («///»).
    • Переработан скрипт is_rust_module.sh.
    • Добавлена поддержка статических (глобальных общих переменных) примитивов синхронизации, основанных на реализации «CONFIG_CONSTRUCTORS».
    • Упрощено управление блокировками: Guard и GuardMut объединены в один параметризованный тип.
    • Предоставлена возможность определения дополнительных параметров при регистрации устройств.
    • Добавлена абстракция «RwSemaphore», выступающая в роли обвязки над Си-структурой rw_semaphore.
    • Для использования mmap добавлен новый модуль mm и абстракция VMA (обвязка над структурой vm_area_struct).
    • Драйвер GPIO PL061 переведён на использование макроса «dev_*!».
    • Проведена общая чистка кода.
    1. Главная ссылка к новости
    2. OpenNews: Четвёртая редакция патчей для ядра Linux с поддержкой языка Rust
    3. OpenNews: Третья редакция патчей для ядра Linux с поддержкой языка Rust
    4. OpenNews: Проект Kerla развивает Linux-совместимое ядро на языке Rust
    5. OpenNews: Вторая редакция патчей для ядра Linux с поддержкой языка Rust
    6. OpenNews: В ветку ядра Linux-next добавлен код для разработки драйверов на языке Rust

    Обсуждение (382 –15) | Тип: Программы |

    Навигация
    Каналы:
    Разделы новостей | Сводные
    Что нового на OpenNet
    Поиск в новостях
    Новые комментарии
    Добавить свою новость

    Прошлый раз:

    Важное
    29.10 Открыт код игрового движка Dagor Engine, который будет использован VK в Nau Engine (112 +25)
    23.10 В Chrome планируют реализовать режим скрытия IP-адреса пользователя (259 +6)
    18.10 Google открыл технологию передачи данных Falcon (183 +17)
    12.10 Выпуск дистрибутива Ubuntu 23.10 (216 +4)
    10.10 Уязвимость в протоколе HTTP/2, задействованная в крупнейшей DDoS-атаке (133 +31)
    08.10 Представлен OpenPubKey, протокол криптографической верификации объектов (59 +8)
    04.10 Выпуск мобильной платформы Android 14 (267 +11)
    03.10 Уязвимость в Glibc ld.so, позволяющая получить права root в большинстве дистрибутивов Linux (149 +26)

    Советы
    21.10.2023 Защита от подмены серверных TLS-сертификатов в результате MITM-атаки провайдером
    15.10.2023 Уменьшение жёстко определённого размера окна приложения в формате AppImage
    12.10.2023 Определение IP-адреса пользователя в Telegram через голосовой вызов
    14.09.2023 Установка в мобильной версии Firefox любого расширения от десктоп-версии
    10.09.2023 Часто используемые параметры sysctl, касающиеся настройки сети в Linux

    Обсуждаемые новости
    01:16 Выпуск Wine 8.19 (62)
    00:46 Опубликован Canoeboot, вариант дистрибутива Libreboot, отвечающий требованиям Фонда СПО (69)
    00:36 Выпуск дистрибутива для создания сетевых хранилищ TrueNAS SCALE 23.10 (115)
    00:30 Открыт исходный код игрового движка Dagor Engine (112)
    00:02 Отечественная мобильная платформа РЕД ОС М, построенная на кодовой базе Android из репозитория AOSP (341)
    23:38 Начальный выпуск ядра БМПОС (427)
    23:38 Выпуск nginx 1.25.3, njs 0.8.2 и NGINX Unit 1.31.1 (152)
    23:28 Релиз фреймворка Qt 6.6 (108)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *