LINUX.ORG.RU

Сообщения seiken

 

Large-Scale C++

Джон Лакос выпустил аж три тома «Large-Scale C++». Кто-нибудь читал? Что скажете, стоит тратить на них время?

 ,

seiken
()

Вопрос новичку на тему C++

Допустим, окончили вы мега-курсы, и приходите устраиваться C++-программистом. Написали «C++» в списке знаний и навыков в резюме, и с гордо поднятой головой шагаете на интервью.

И вот, вам дают такой вопросик. Скажите, что произойдёт при выполнении данного кода (код, разумеется, бредовый, иначе как проверить знание секретов C++?):

#include <iostream>

struct T
{
    int iVal = 0;
    void printValue() const
    {
        std::cout << "Value is " << iVal << std::endl;
    }
    void destruct()
    {
        delete this;
    }
};

int main()
{
    T x{9};
    x.destruct();
    x.iVal = 11;
    x.printValue();
}

Какой правильный ответ, и почему?

 

seiken
()

Монадические операции: быть или не быть?

Кто не знал, в C++23 добавили «монадические операции» для std::optional. Вот тут можно посмотреть пример:

https://www.cppstories.com/2023/monadic-optional-ops-cpp23/

Что бы вы предпочли в своем коде: первый вариант (по старинке с if(x) …) или второй, монадический? При условии, разумеется, что вам доступен и разрешен C++23.

Лично я - первый, и вот, почему:

1) во-первых, классический пример уже неоправданно многословен. Зачем писать «if (x) … if (! x) …», когда можно просто «if (x) … else …»;

  1. автор как бы специально хочет показать, что с монадическими код короче, и специально вставляет пустые строки между if’ами, там где с монадическими операциями пишет всё подряд без пустых строк;
  2. приходится на пустом месте создавать лямбды;
  3. а что, если будет два std::optional, и второй используется опционально, при условии, что первый установлен? Тогда забор из лямбд.

Такое ощущение, что делается это всё ради жертвы богу функциональщины.

А вы как считаете?

 , c++23

seiken
()

GUI best practices

А есть ли какие-то best practices, если не стандарты для современного UI? Я не имею в виду всякие бензоколонки и терминалы самообслуживания в магазинах, а системы для компов общего назначения. Например, в классическом UI из 90х есть модели SDI/MDI, есть понятие главного меню, как должны выглядеть и вести себя пункты этого меню, есть тулбары, статус-бар и проч. джентльменский набор.

А для современного UI например на электроне есть подобное или кто как хочет, так и дрочит /// или разраб электрона уже всё на ходу «стандартизировал», а разраб только использует, что дают?

 

seiken
()

Опенсорс коллаборация опасна для национальной безопасности

Кто там раскатал губу, что RISC-V потеснит ARM, потому что свобода, равенство, братство взамен проприетарщине и анальным зондам?

Американские сенаторы уже хотят на законодательном уровне обязать все американские компании, а также физических лиц, работающих с Китаем по теме RISC-V, получать экспортные лицензии.

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

https://www.reuters.com/technology/us-china-tech-war-risc-v-chip-technology-emerges-new-battleground-2023-10-06/

 

seiken
()

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

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

А вот, новости о iphone15:

(https://lenta.ru/articles/2023/10/08/iphone_trouble/)

A17 Pro — самый мощный мобильный процессор на рынке. Созданная по трехнанометровому техпроцессу модель имеет 19 миллиардов транзисторов и позволяет запускать на iPhone портированные ААА-игры с поддержкой трассировки лучей. До конца года на флагманские телефоны выйдут Death Stranding, Resident Evil 4 и Assassin's Creed Mirage — в серьезные игры с консолей можно будет спокойно играть на экране смартфона.

Трассировка лучей на смартфонном экране, серьезные игры с консолей на смартфоне… Больные что ли?

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

Гениально! Сначала спешат впихнуть в смарт печку, а потом героически её тушат :) Даже покраска говённая.

 

seiken
()

curl уязвим, но я вам не скажу, какие версии

Разраб (?) curl оповестил о том, что в curl найдена серьёзная уязвимость, жутчайшая за много лет. Мейнтейнеры дистрибутивов оповещены, детали 11 октября.

https://github.com/curl/curl/discussions/12026

I cannot disclose any information about which version range that is affected, as that would help identify the problem (area) with a very high accuracy so I cannot do that ahead of time. The "last several years" of versions is as specific as I can get.

We have notified the distros mailing list allowing the member distributions to prepare patches. (No one else gets details about these problems before October 11 without a support contract and a good reason.)

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

 

seiken
()

Физическое расположение ноута и работоспособность

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

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

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

 

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
()

RSS подписка на новые темы