LINUX.ORG.RU

Сообщения seiken

 

Некрофилия или чувство прекрасного

Задумайтесь, почему люди, которые не застали эпоху 70х, 80х, с удовольствием смотрят фильмы того времени, а от современных плюются? Нельзя в данном случае сказать, что «когда я был молодой, солнце светило ярче, а стоял дольше», т.к. не было их даже в проекте, и никакого солнца для них не существовало.

Эпоха Вивальди и даже Моцарта - это вообще временной раздел размером с океан, и тем не менее.

Линукс тут при том, что когда копировали со «старых» коммерческих систем из 90х, была надежда, что будет альтернативный десктоп, а потом…

Разве это не подтверждение всеобщей дегенерации общества, а никакая не вкусовщина?

 

seiken
()

Werror - контроль качества или занудство?

Все, кто занимается низкоуровневым жонглированием байтами в реалых промышленных условиях (с кучей поставщиков со всего мира, а не в уютненьком молодёжном стартапе где-нибудь в Саннивейл), понимают, что C’шка с нами надолго, лет на 20, если не больше. И поэтому возникает желание максимально использовать существующие технологии для обеспечения качества кода.

Например, Werror (и то, что к нему полагается в виде -Wall, -Wextra и проч.). Но возникают такие ситуации, как например с «целочисленным повышением» и последующим сравнением с разным знаком. Например:

const unsigned x = 12;
unsigned char y;
unsigned char z;
... // что-то кладём в y и z
if (x < (y*z))
{
   // тра-ля-ля
}

И y*z превращаются («брюки превращаются, превращаются брюки…») в элегантный int, и вылезает предупреждение о различной знаковости, как бы совершенно на ровном месте. Т.е. теперь, чтобы ублажить компилятор, надо дополнительно, например, явно кастануть x к int’у. Т.е., код уже на пределе читаемости (выше пример - это сильное упрощение возможной реальной ситуации), и тут мы ещё добавляем вовсе не интуитивный (int).

И возникает вопрос: а стоит ли овчинка (-Werror и ко.) выделки? Я сейчас, очевидно, не имею в виду код наивысшей критичности, а такой, который при случае можно просто неспеша поправить, в конце рабочего дня, с нулевыми последствиями для пользователей, окружающей среды и т.п.

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

UPD: в примере, в нагрузку к умножению надо ещё добавить сложение с ещё одним unsigned char.

 ,

seiken
()

Окно открытия файла и передний план

В GNOME ввели уже давно какую-то наркоманскую хрень. Если в приложении выбрать «открыть файл», pop-up окно отрывается где-то на заднем плане, а на переднем появляется уведомление, что типа окно готово. Где настроить, чтобы по-человечески диалог показывался сразу после его открытия?

 ,

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

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