The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Ядру Linux исполнилось 28 лет, opennews (ok), 25-Авг-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


38. "Ядру Linux исполнилось 28 лет"  +3 +/
Сообщение от Аноним84701 (ok), 25-Авг-19, 13:28 
> -  2.0.0 - июнь 1996, 778 тыс. строк кода;
> -  2.2.0 - январь 1999, 1.8 млн. строк кода;

Слабовато!
https://www.phoronix.com/scan.php?page=news_item&px=Systemd-...
> systemd Clocks In At More Than 1.2 Million Lines
> 21 May 2019 at 07:30 PM

.

Ответить | Правка | Наверх | Cообщить модератору

41. "Ядру Linux исполнилось 28 лет"  +2 +/
Сообщение от Аноним (41), 25-Авг-19, 13:39 
Господи исусе...
Ответить | Правка | Наверх | Cообщить модератору

72. "Ядру Linux исполнилось 28 лет"  +/
Сообщение от Anonymoustus (ok), 25-Авг-19, 18:04 
>> -  2.0.0 - июнь 1996, 778 тыс. строк кода;
>> -  2.2.0 - январь 1999, 1.8 млн. строк кода;
> Слабовато!
> https://www.phoronix.com/scan.php?page=news_item&px=Systemd-...
>> systemd Clocks In At More Than 1.2 Million Lines
>> 21 May 2019 at 07:30 PM
> .

У системды уже более миллиона строк говнокода?! И всё это с волшебными числами, полагаю…

Ответить | Правка | К родителю #38 | Наверх | Cообщить модератору

84. "Ядру Linux исполнилось 28 лет"  +/
Сообщение от Аноним84701 (ok), 25-Авг-19, 19:05 
> У системды уже более миллиона строк говнокода?!

Угу. Я-то все в опенхаб смотрел, а там "оно" заморожено уже давно.

> И всё это с волшебными числами, полагаю…

Сейчас  глянул в свежие коммиты, открыл пяток файлов, поискал по диагонали тупо по "+ ".
После последних "улучшайзингов" (видимо, от немецкого "шай*е") гитхаба ссылка на строку не копируюется, так что просто куски из этих файлов:
https://github.com/systemd/systemd/blob/master/src/journal/j...


        /* Now seek to the last occurrence of this boot ID. */
        sd_id128_to_string(next_boot->id, match + 9);
        r = sd_journal_add_match(j, match, sizeof(match) - 1);


https://github.com/systemd/systemd/blob/master/src/journal/j...

        if (x != 0 && x + 40 * USEC_PER_MSEC > z)
                return;

        *last_usec = z;

        n = (3 * columns()) / 4;
        j = (n * (unsigned) p) / 65535ULL;

...

for (i = 0; i < j; i++)
                fputs("\xe2\x96\x88", stdout);

        fputs(ansi_normal(), stdout);

        for (i = 0; i < k; i++)
                fputs("\xe2\x96\x91", stdout);

        printf(" %3"PRIu64"%%", 100U * p / 65535U);

...
        n = (3 * columns()) / 4;

        putchar('\r');

        for (i = 0; i < n + 5; i++)
                putchar(' ');
...
if (show_progress)
                        draw_progress(0xC000 + scale_progress(0x3FFF, i, n), last_usec);
...
if (show_progress)
                        draw_progress(0x8000 + scale_progress(0x3FFF, i, n), last_usec);


ЗЫ:
Я оттуда вообще-то, когда-то хотел парсингом конфигов "спионе"^W вдохновиться, но вместо классической схемы, с однократной обработкой ввода, токенизацей и последующей работой с токеном (т.е. например структурой, включающей тип токена, его значение, позицию и что там еще нужно), там тупо на каждое сравнение вызывается сгенерированное обертками из макроса:

for keyword in keyword_array {
   if (strcmp(keyword, word) …

Ну и
https://github.com/systemd/systemd/blob/3884274b152fe6a20db9...


FOREACH_WORD_SEPARATOR(word, l, s, ":", state) {
                if (l == 8 && strneq(word, "shutdown", l))
                        what |= INHIBIT_SHUTDOWN;
                else if (l == 5 && strneq(word, "sleep", l))
                        what |= INHIBIT_SLEEP;
                else if (l == 4 && strneq(word, "idle", l))
...
else if (l == 20 && strneq(word, "handle-hibernate-key", l))
                        what |= INHIBIT_HANDLE_HIBERNATE_KEY;
                else if (l == 17 && strneq(word, "handle-lid-switch", l))
                        what |= INHIBIT_HANDLE_LID_SWITCH;

как-то не впечатлили, а немного совсем наоборот 🙄
Ответить | Правка | Наверх | Cообщить модератору

100. "Ядру Linux исполнилось 28 лет"  –1 +/
Сообщение от Аноним (100), 25-Авг-19, 21:25 
Для парсинга .ini файлов коими и являются конфиги systemd, навороты с лексическим и синтаксическим анализатором нафиг не нужны.
Ответить | Правка | Наверх | Cообщить модератору

102. "Ядру Linux исполнилось 28 лет"  –1 +/
Сообщение от Аноним (100), 25-Авг-19, 21:26 
Да и кстати с последним фрагментом кода ты тоже облажался, почему не скажу, сам думай.
Ответить | Правка | Наверх | Cообщить модератору

111. "Ядру Linux исполнилось 28 лет"  +1 +/
Сообщение от Аноним84701 (ok), 25-Авг-19, 23:08 
> Для парсинга .ini файлов коими и являются конфиги systemd, навороты с лексическим
> и синтаксическим анализатором нафиг не нужны.

Конечно, нафиг "жирный" re2c, нафиг централизованная обработка с проверками по месту, давайте раскидаем все щедро по всему коду
https://github.com/systemd/systemd/search?utf8=%E2%...
https://github.com/systemd/systemd/search?utf8=%E2%...
https://github.com/systemd/systemd/search?utf8=%E2%...

> Да и кстати с последним фрагментом кода ты тоже облажался, почему не скажу, сам думай.

Т.е. по всему остальному претензий нет?
И да, похоже аноним не понял, в чем "прелесть" конструкции


else if (l == 20 && strneq(word, "handle-hibernate-key", l))
                        what |= INHIBIT_HANDLE_HIBERNATE_KEY;
                else if (l == 17 && strneq(word, "handle-lid-switch", l))

вместо

else if(token.HANDLE_HIBERNATE_KEY) …

и проверках, осмысленных ошибках с куском строки, позицией и прочими плюшками

но облажался я? Ну-ну.

Ответить | Правка | К родителю #100 | Наверх | Cообщить модератору

116. "Ядру Linux исполнилось 28 лет"  –3 +/
Сообщение от Ordu (ok), 26-Авг-19, 00:45 
> И да, похоже аноним не понял, в чем "прелесть" конструкции
> else if (l == 20 && strneq(word, "handle-hibernate-key", l))
>                        what |= INHIBIT_HANDLE_HIBERNATE_KEY;
>                else if (l == 17 && strneq(word, "handle-lid-switch", l))
> вместо
> else if(token.HANDLE_HIBERNATE_KEY) …

А я могу объяснить в чём прелесть. Чтобы сделать if(token.бла-бла-бла), придётся писать лишних строк пятьсот кода, с объявлением структуры token, и потом эти пятьсот строк кода будут в течение неопределённого времени получать патчи связанные с тем, что кому-то что-то надо было сделать, но оно не делалось нормально, кроме как через патч в библиотечный код. Типа мы изменили немного семантику флага в конфиге, поэтому мы теперь меняем структуру токена, переносим константы из одного enum'а, в другой enum, затем меняем содержимое статических массивов, по которым генерятся хештаблички для быстрого поиска. Затем мы вносим ещё парочку изменений, без которых код не компилируется. А потом мы запускаем аудит всего кода, который пользуется этой структурой, для того, чтобы убедиться, что мы ничего не поломали. На последнем этапе могут помочь тесты, но помочь относительно: мы в результате получим грядку тестов, которые не будут компилироваться, или которые будут фейлится, и нам придётся их переписывать. Груда никому не нужных усилий.

Если эти ненужные усилия всё же последовательно прилагать, то в результате код раздуется до полутора (двух, трёх...) тысяч строк кода. Будет получена какая-то мутная абстракция, которой пользоваться могут только те, кто её создавал. Да и они через год забудут. Значит придётся писать подробную документацию, причём не просто API с описанием точек входа и типов, а целый мануал на тему, как это использовать в тех или иных случаях. А это значит, что количество усилий на изменение семантики флага возрастёт ещё: придётся ещё и документацию на API парсера исправлять каждый раз.

Зачем все эти сложности? От этого код станет короче? От этого он станет понятнее? Понятнее в смысле, "понятнее что код делает", или в смысле "понятнее как код делает, то что он делает"? Код будет проще поддерживать? Это риторические вопросы, потому что ответы на них "незачем, эти сложности в этом месте не нужны", "нет", "нет", "некорректный вопрос: ни в каком смысле понятнее не станет", "нет".

Ответить | Правка | Наверх | Cообщить модератору

121. "Ядру Linux исполнилось 28 лет"  +1 +/
Сообщение от Аноним (121), 26-Авг-19, 05:57 
Лёня художник, он так видит.
Ответить | Правка | К родителю #111 | Наверх | Cообщить модератору

126. "Ядру Linux исполнилось 28 лет"  +/
Сообщение от Anonymoustus (ok), 26-Авг-19, 08:36 
> Лёня художник, он так видит.

А линуксоиды просто урчат и чавкают новым стандартом, которым поцтеринг их кормит с лопаты. Умилительно. Йа прослезился.

Ответить | Правка | Наверх | Cообщить модератору

150. "Ядру Linux исполнилось 28 лет"  –1 +/
Сообщение от Michael Shigorinemail (ok), 27-Авг-19, 02:00 
> Лёня художник

От слова "брусчатка", что ли?

Ответить | Правка | К родителю #121 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру