LINUX.ORG.RU

Сообщения seiken

 

В MS ошиблись, и выложили свои данные в инет

 ,

Пишут, что в команде MS AI ошиблись с конфигурированием облаков, и вместе с публикацией на GitHub открытых наборов данных для тренировки моделей, выложили доступ к 38Тб внутренних данных, включая бэкапы двух рабочих станций, с тоннами мстимс переписки, явками, паролями…

https://www.wiz.io/blog/38-terabytes-of-private-data-accidentally-exposed-by-microsoft-ai-researchers

В вы когда-нибудь проваливались так былинно, чтобы раскрыть внутренние данные фирмы?

Не тонкий ли это намёк, что сапиенс уже не в состоянии справиться со своей работой, и пора его заменять ИИ?

seiken
()

rust, безопасность и разбор сетевых пакетов

 

Не пойму такой вещи в безопасном расте. Типичный сценарий: сервер (или клиент - не суть важно) получает по сети поток байтов, и должен сформировать пакет. Например, какой-то очень простой протокол:

клиент, запрос: |1|длина_тела|тело|

сервер, ответ: |2|длина_тела|тело|

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

Клиент делает такую штуку: кладёт в тело 10 байт, а в длине_тела указывает какое-нибудь 10000. Сервер всё это принимает, но программист сервера забыл сделать проверку, что длина_тела <= длина(тело) (того, что реально получено в езернет кадре, например). Объекта типа «пакет» ещё нет на сервере, и нет массивов, длину которых может проконтролировать рантайм, эти массивы структуры данных только конструируются из фактически бестипового потока байтов. Т.е. делается просто копирование длина_тела байт из тела, сервер залезает в какие-то свои кишки на стеке, и отправляет всё это клиенту. А там пароли, криптографические ключи, коды запуска ракет, …

Как раст защитит программиста сервера от такого сценария?

seiken
()

Как практиковать взломы

 пеннтестинг

Вообще это тема для Секьюрити, но не вполне техническая, так что тут.

Как люди практикуются в пеннтестинге? Только в рамках заказа от фирмы? Т.е. человек, которого нанимают в такую контору обладает исключительно теоретическими знаниями. Если даже они практические, собственно, выполнять их на живой системе он никогда не мог. Ведь даже просто левый запрос по http в обход форм UI может трактоваться как попытка какого-нибудь SQL Injection и автоматически преследуется по закону, по крайней мере, в США.

seiken
()

В ядро не так просто попасть

 , ,

Некоторые указывают на первоначальный отказ Линуса принимать rust в ядро как на провал, что мол чего они тащат в ядро эту поделку? куда со своим рылом в калашный ряд? и проч.

А вот есть пример, bcachefs. copy-on-write FS, разработана уже в 2015г., и никак не может попасть в главную ветку.

Вот последние героические потуги:

As of February 2023, Bcachefs has still not been merged into the mainline Linux kernel.[2][3] In May 2023, Bcachefs was once again submitted to the LKML, but did not make it into the 6.5 development kernel release.[13]

Так-то вот. А вы говорите «раст, раст»…

seiken
()

Спалили ужасного хакера

 ,

Максим Галочкин из Абакана оказался главарём хакерской группы, терроризирующей приличных людей.

Лента сообщает:

Расследование Wired началось в марте 2022 года, вскоре после того, как некто под ником Trickleaks опубликовал в социальной сети Twitter (сейчас — X) переписки нескольких десятков членов Trickbot из внутренних онлайн-чатов защищенных мессенджеров. Всего в них оказалось около четверти миллиона сообщений, а также самодельные досье на хакеров. В них были указаны их реальные имена, фотографии, учетные записи в социальных сетях, номера паспортов, телефоны, города или даже точные адреса проживания.

А вот ещё цитата:

У меня большие планы. Я хочу быть богатым, хочу стать миллионером. Получив много денег, я получу все, к чему стремился

А Линукс тут при том, что пока вы в нём сидите, со своими жалкими администрированием, программированием и проч. ерундой, парень уже пришел к успеху.

seiken
()

Поисковик по мелодии

 поиск музыка

Почему нет такой элементарной вещи, как поисковик музыки по фрагменту мелодии? Например, запрашиваю в нотной нотации то, что помню, а оно ищет совпадения в базе. Я например, помню фрагмент темы какого-то концерта для скрипки, но никак не могу его найти. А для барокко, классики, романтизма даже нет никаких копирайтера, всё давно выложено на Ютубе.

А Линукс тут, очевидно, при том, что поисковик можно хостить на Линуксе.

seiken
()

Реклама Питона лезет из всех щелей

 , ,

Заметил, что последние примерно пять лет реклама Питона стала всепроникающей. На каналах Ютуба (который лично я считаю просто современным ТВ), которые вообще никакого отношения к IT не имеют, рекламируют в своих видосах всякие курсы Питона.

Причём, реклама обычно начинается с какого-нибудь интересного тезиса, типа вот там ИИ - это топчик технологических достижений, за ним будущее. А потом ловко выворачивают «а какой ЯП самый распространенный в ИИ? Питон!!!». Я всегда думал, что надо сначала вообще понять, что такое ИИ, машинное обучение, осилить как минимум того же Саймона Хайкина, а потом уже кодерить. Но что можно понять в пределах одного несчастного курса о Питоне…

Дальше говорят, что вот, типа научим основным навыкам, нужным для профессии. Типа, средняя з.п. начинающего питониста 150т.р. Мне вот, что не понятно. Если всё так просто, и в среднем начинающий питонист получает 150т.р., почему нет толп неайтишников, горбатящихся до сих пор на з.п. 100т.р., ломящихся получать эти 150т.р., ведь нужно всего лишь окончить такие курсы? Или основная часть людей настолько далека от логического мышления, что даже основы программирования на Питоне осилить не в состоянии? Или понимают, что лохотрон?

Самый главный вопрос: когда уже этот хайп с питоном, ИИ и «науке» о данных сдуется к чёртовой матери?

seiken
()

Переставить элементы контейнера в фиксированной последовательности

 ,

Вопрос знатокам стандартной библиотеки для C++ до 20. Есть ли такая стандартная машинерия, которая переставляет элементы контейнера в порядке указанных индексов?

Что-то типа:

std::list<int> xs{1, 2, 3, 4, 5};
std::vector<int> xsIndices{2, 0, 3, 1, 4};
std::reorder(xs.begin(), xs.end(), xsIndices.begin());

и в результате в xs будет 3 -> 1 -> 4 -> 2 -> 5.

seiken
()

Linux 0.01, кто бы тогда подумал...

 , копролит,

Современные версии ядра под 35 млн строк кода и выше. А вот человек заглянул в v0.01, и улыбнулся: (https://seiya.me/blog/reading-linux-v0.01)

 *  'schedule()' is the scheduler function. This is GOOD CODE! There
 * probably won't be any reason to change this, as it should work well
 * in all circumstances (ie gives IO-bound processes good response etc).

Всё прибито гвоздями к i386, a ОС называлась даже не Linux, a:

# Makefile for the FREAX-kernel.

Стиль кодирования уровня «Бог»:

(void) open("/dev/tty0",O_RDWR,0);
(void) dup(0);
(void) dup(0);

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

Кто бы тогда подумал, во что мутирует наколеночная поделка…

seiken
()

Что вы делаете при неудачном close?

 надёжное по

Системный вызов close возвращает код ошибки:

https://man7.org/linux/man-pages/man2/close.2.html

Опустим тривиальные случаи типа EINTR. Например, возвращается EIO - «An I/O error occurred», что не сильно более информативно, чем «иди на …». Фактически, ничего дельного, кроме разве что отправки лога (или попапа об ошибке, если это гуишное ПО), сделать нельзя. Можно попытаться повторить операцию close. Но откуда мы знаем, что во второй раз она завершится удачно? В общем случае она теоретически может завершиться удачно на (N+1)’й попытке, где N может быть произвольно большим числом.

UPD: а ещё не специфицировано, освободится ли дескриптор файла при EIO, так что в такой ситуации ещё может быть исчерпание лимита открытых файлов.

А вы что делаете в таких случаях, когда вообще непонятно, как программе обработать ошибочное состояние?

seiken
()

ИИ разрабатывает процессоры

 ,

Учёные спроектировали ЦП при помощи ИИ, и запустили на нём Linux.

https://arxiv.org/abs/2306.12456

This approach generates the circuit logic, which is represented by a graph structure called Binary Speculation Diagram (BSD), of the CPU design from only external input-output observations instead of formal program code. During the generation of BSD, Monte Carlo-based expansion and the distance of Boolean functions are used to guarantee accuracy and efficiency, respectively. By efficiently exploring a search space of unprecedented size 10^{10^{540}}, which is the largest one of all machine-designed objects to our best knowledge, and thus pushing the limits of machine design, our approach generates an industrial-scale RISC-V CPU within only 5 hours. The taped-out CPU successfully runs the Linux operating system and performs comparably against the human-designed Intel 80486SX CPU. 

Как вам такое?

seiken
()

Опять уязвимость в этом Линукс

 

Никогда такого не было, и вот, опять. Оказалось, что реализация maple tree, которые добавили вместо rb tree для более отзывчивой рулёжки виртуальной памятью (в 6.1?), подвержена проблеме use-after-free. Исследователи утверждают, что у них есть готовый эксплоит, который позволяет локальному пользователю повысить привилегии. В соответствие с политикой выкладывания таких эксплоитов, опубликован код будет не ранее конца июля, но исправление уже смерджили.

https://github.com/lrh2000/StackRot

seiken
()

Время в комментах коммитов

 коммиты

Какое время используете, настоящее или прошедшее?

Например:

Add feature XYZ

(в смысле «добавить фичу») или:

Added feature XYZ

(в смысле «добавлена фича»)

seiken
()

Linux под водой

 

Слышали новость? Какие-то богатые туристы залезли в батискаф, и решили погрузиться в океан, чуть ли не до Титаника. Ну и пропали без вести.

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

seiken
()

Гениальное открытие

 гениальное, ,

Какое по-вашему самое гениальное открытие в математике за всю историю науки?

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

seiken
()

Архитект или кто?

 

Как считаете, это нормально от архитекта требовать:

The Software Architect will be expected to conduct root cause analysis on defects,
identify interim and permanent fixes 

Понятно, что для каких-то нетривиальных багов нужна помощь всей команды технарей, но как понять, что у конторы просто нет программиста, и требуется «и швец, и жнец, и на дуде игрец»? Или в наступившем мире нет больше фиксированных ролей в ПО-инженерии?

seiken
()

Увеличить время видимости нотификации для usb-носителей

 ,

Можно как-то увеличить время видимости нотификации, которая появляется при подключении usb-диска? Пока я доставляю мышь, чтобы открыть корень, нотификация уже исчезает. KDE той версии, которая в KUbuntu 22.04.

seiken
()

RISC-V набирает обороты

 ,

Под эгидой The Linux Foundation собрались большие акулы (Intel, Samsung, Nvidia, Google, Qualcomm, RedHat) и будут выделять деньги, координировать дальнейшую разработку софта (llvm, gcc, linux, android, python, openjdk, openblas и др.).

RISE is dedicated to enabling a robust software ecosystem specifically for application processors that includes compilers, toolchains, system libraries, kernel, virtualization, programming languages, Linux distribution integration, and tools for debug and profiling.

https://riseproject.dev/

Так что глядишь, лет через 5 очередной самсунговский смарт уже на RISC-V будет, а не на ARM. Ну а там и Apple подтянется, и «сделает всё, как следует».

seiken
()

CPS в нефункциональных ЯП

 ,

Вопрос тем, кто использует (изначально, преимущественно) не функциональные ЯП (C++, Java, Python). Как вы относитесь к CPS (Continuation-Passing Style)?

Для тех, кто не в курсе, например, есть некая операция, которая может завершиться удачно, а может с ошибкой, и вместо:

Result performOperation()
{
	return doOperation();
}

...

Result result = performOperation();

if (OK == result)
{
	std::cout << "OK" << std::endl;
}
else
{
	std::cout << "NOK" << std::endl;
}

Делается так:

void performOperation(Func onSuccess, Func onFailure)
{
	if (OK == doOperation())
	{
		onSuccess();
	}
	else
	{
		onFailure();
	}
}

...

performOperation([]() {
			std::cout << "OK" << std::endl;
		},
	         []() {
			std::cout << "NOK" << std::endl;
		});

Заранее пардон, если какие-то синтаксические ошибки, это чисто концептуальные примеры.

Даже предлагаю варианты ответов:

  1. Код с этими лямбдами сложно понимать, всегда объявляю все функции и методы по-старинке, вызываю явно в императивном стиле;

  2. Да, только так и делаю. Умные люди придумали ФП не просто так и гораздо нагляднее, не то, что у дурачков с императивной лапшой;

  3. Мне всё равно, могу/делаю и так, и сяк.

seiken
()

Какие теперь Линуксы серверы использовать?

 ,

Вопрос админам и околоадминам. А так ли нужна была эта платная поддержка дистрибутивов типа RHEL, SuSE Enterprise (или как там его)? И теперь, в связи с прекращением ее на территории РФ, какие дистрибутивы использовать для серверов? Или всё пофиг, и всё то же самое, но без платной поддержки производителя?

seiken
()