LINUX.ORG.RU

Сообщения shkolnick-kun

 

Rust is not safe!

Форум — Development

https://youtu.be/vfMpIsJwpjU

Для Ъ: в этом вашем Rust с 2015 года существует уязвимость, позволяющая неограниченно расширить время жизни любой переменной и воспроизвести любые уязвимости, связанные с памятью.

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

А Linux тут при том, что и на нём эти уязвимости прекрасно воспроизведутся.

 ,

shkolnick-kun
()

Трибьют по моему научному руководителю

Форум — Development

Привет ЛОР!

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

Стал искать Его почту в gmail и не нашёл. Стал искать Его служебную почту и… Оказалось, что Он умер этим летом…

Сижу, грущу.

Спите спокойно, Дмитрий Владимирович. Мы Вас помним.

 , ,

shkolnick-kun
()

Поставил private GPT, тестирую вот!

Галерея — Скриншоты

Некоторое время назад я сделал нейроябеду.

Нейросеть обучалась искать нарушение правил форума на базе из 5 миллионов сообщений, собрать которые мне любезно помог Шома.

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

Узнал про private GPT, и подумал, а что если разметить посты большой языковой моделью.

Скачал, поставил, запустил. Результат на ОП-пике.

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

Видимо завтра попробую detoxify, разметка с ROC AUC 89% всяко лучше, чем человеческая.

>>> Просмотр (1920x1080, 181 Kb)

 , ,

shkolnick-kun
()

Вышла YAFL-0.30.2

Новости — Open Source
Группа Open Source

Сегодня состоялся третий релиз библиотеки YAFL.

YAFL — это библиотека, написанная на Си, содержащая несколько алгоритмов Калмановской фильтрации, распространяемая под лицензией Apache-2.0.

( читать дальше... )

>>> Подробности

 , , , ,

shkolnick-kun
()

Средства разработки, которые мы заслужили...

Форум — Development

Привет, ЛОРчане!

А вам не кажется, что со средствами разработки в последнее время творится что-то странное или даже страшное?

В общем делюсь своей историей «успеха».

Не так давно создатели SDCC добавили новый стандарт вызова процедур, ломающий обратную совместимость со старым ассемблерным кодом. Причем добавили они его в версии SDCC 4.2.0, то есть сломали совместимость в минорщине…

И вот 29 декабря прошлого года я решил, что на текущих выходных не буду заниматься проприетарщиной на фрилансе, а внесу соответствующие изменения в порт BuguRTOS на stm8/sdcc. Сами ассемблерные вставки я поправил ещё 29-го перед корпоративом, а вчера решился внести изменения в код ОС, поднять всё, что нужно для разработки и тестирования имбедов на своём ноуте с debian bullseye (inb4 некрофилия), и протестировать BuguRTOS на реальном железе, ибо грядёт релиз.

В общем, включил ноут, запустил git-gui, чтобы склонировать репу с Гитхаба и…

Тут меня ждали первые грабли

Название ветки master по дефолту депрекейтед и вообще не политкорректно, меняй дефолтное название ветки, ибо белые цисгендерные гетеросексуальные шовинистические членомрази должны страдать!

Ладно, сделал git clone из консоли, начал ставить инструметы для разработки и тестить.

Под AVR все тесты удачно собрались штатными avr-gcc и avr-binutils, запустились на штатном simavr с отладкой через штатный avr-gdb, загрузились штатным avrdude и удачно отработали на старенькой Arduino(tm) nano.

Отладка работает быстро.

На Cortex-Mх меня ждали следующие грабли

Пакет stlink в debian oldstable оказался стабильно глючный: точки останова не ставятся, дисасм не работает и т.д.

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

Третьи грабли встретились мне на rp2040

Использую VSCodium вместо VSCode, дабы избежать «телеметрии». Установка cortex-debug и ms-vscode.cmake-tools прошла успешно, а вот комада:

codium --install-extension ms-vscode.cpptools

выдала

Installing extensions...
Extension 'ms-vscode.cpptools' not found.
Make sure you use the full extension ID, including the publisher, e.g.: ms-dotnettools.csharp
Failed Installing Extensions: ms-vscode.cpptools

и такая проблема не только у меня.

Ладно, на сборку и отладку это не повлияло, но осадочек остался.

Да, кстати

Отдадка на rp2040 через старую версию picoprobe под vscodium работает гораздо быстрее, чем на любом stm32 через stlink под Code::Blocks.

Четвёртые грабли ждали меня… правильно на stm8 и sdcc

В debian bullseye стоит SDCC-4.0.0 и нет пакета stm8flah.

В общем, stm8flash собрал из исходников, протестил ОС на старой версии компилятора.

Дальше скачал SDCC-4.3.0 и Code::Blocks под Офтопик, и перешёл в виртуалку с офтопиком 10, поставил тулчейн, IDE, st-toolset для прошивки, стал собирать и «заливать» тестовые проекты на Discovery…

И один из проектов не собирается ни в какую, т.е. на SDCC-4.0.0 в debian собирался, а тут sdccld посчитал, что мои статики не статики и ругается на множественные определения функций!

Все остальные тестовые проекты, отличающиеся только файлом main.с, собрались и успешно отработали, т.е. ассемблерные вставки были написаны без ошибок в слепую перед корпоративом.

Итого

Вместо того, чтобы поставить средства разработки и протестировать BuguRTOS за ПОЛ дня я протахался ДВА!!!

Из-за множественных ошибок в средствах разработки!

Кто из вас сталкивался с чем-то подобным?

Напишите в комментариях, что вы на этот счёт думаете, и поделитесь своими историями «успеха».

 , , ,

shkolnick-kun
()

Asterisk на русских Линуксах

Форум — Linux-install

Привет, ЛОР!

Поскажите российский дистрибутив линукса, желательно сертифицированный для применения в госорганах, МО РФ и т.д., у которого в репах есть asterisk.

 , ,

shkolnick-kun
()

Вышла библиотека YAFL-0.20.0!

Новости — Open Source
Группа Open Source

Сегодня, в День знаний 2022 г., состоялся второй релиз библиотеки YAFL.

YAFL — это библиотека, написанная на Си, содержащая несколько алгоритмов Калмановской фильтрации, распространяемая под лицензией Apache-2.0.

Библиотека ориентирована на применение во встраиваемых системах на базе микроконтроллеров с аппаратной поддержкой вычислений с плавающей точкой.

В новом релизе:

  • Все фильтры библиотеки стали адаптивными, т.к. добавлена возможность коррекции UDU-разложений матриц корреляции шумов измерения и процесса во время выполенения:

    • Для вариантов обобщенного фильтра Калмана поддерживается коррекция матриц корреляции шумов процесса и измерения.

    • Для вариантов сигма-точечного фильтра Калмана поддерживается только коррекция матрицы корреляции шума измерения. Что связано с нестабильной работой фильтров при включенной коррекции марицы корреляции шума процесса.

  • Добавлены AB-тесты для регрессионного тестирования а так же для сравнения поведения функций из YAFL с и прототипами на Pyhton (numpy, FilterPy).

  • Добавлены тестовые проекты на Си.

  • Выполнено ручное тестирование библиотеки, исправлены выявленные ошибки.

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

Репозитории библиотеки доступны на:

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

>>> Подробности

 , , ,

shkolnick-kun
()

YAFL, много аргументов у функций, что делать?

Форум — Development

Привет, ЛОР!

Есть у меня вот такое поделие.

И есть в нём страшные места по типу:

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

Хочется сэкономить память на стеках и (в идеале) не уронить производительность.

В первом случае можно для всех аргументов сделать поля в self, но для второго (если действовать по аналогии) уже придется создавать отдельную структуру для значений аргументов…

Встечались ли вы с подобными проблемами, и как решали их?

 , , , ,

shkolnick-kun
()

Библиотека ReSGP4

Новости — Open Source
Группа Open Source

Спустя совсем немного времени после Дня космонавтики состоялся релиз библиотеки ReSGP4.

Библиотека представляет собой расширение для Python 3, которое позволяет симулировать движение космических объектов по орбитам вокруг Земли.

( читать дальше... )

>>> Подробности

 , , ,

shkolnick-kun
()

Разыскивается говнокод

Форум — Development

Привет ЛОР!

Разыскивается безобразный код на С/С++!

Вот прям чтоб мозг взорвался при чтении!

Желательно, - под микроконтроллеры или embedded linux.

Приветствуются:

  • магические числа прямо в коде, без определения константы,
  • операции с правкой i внутри цикла for (i=0;…),
  • прямые (не через колбэк) вызовы функций верхнего уровня из нижнего,
  • переполняющиеся буфера,
  • программмирование копипастой,
  • китайский и индусский код,
  • любые другие антипаттерны!

 , , ,

shkolnick-kun
()

Новый корчеватель или доигрались с этими своими антиплагиатами.

Форум — Talks

В науке происходят странные вещи. Институт инженеров электротехники и электроники (IEEE) был опубликован документ под названием «Исследования по удалению мышьяка с гетеросексуальных электродов неоднородных материалов в воде».

>>>Подробности

Для Ъ: Засилье этих ваших антиплагиатов и машинных переводчиков приводит к появлению странных статей в известных научных изданиях с peer review, ИЧХ статьи пропускают без исправлений.

А линукс тут при том, что у нас так гетеросексуальные модули ядра могут появится из-за гуглоперевода!

 , корчеватель,

shkolnick-kun
()

BuguRTOS 4.1.0

Новости — Open Source
BuguRTOS 4.1.0
Группа Open Source

Спустя почти два года после прошлого релиза вышла новая версия встраиваемой операционной системы реального времени BuguRTOS-4.1.0.

( читать дальше... )

>>> Подробности

 , , ,

shkolnick-kun
()

Как обращаться с графами, хранящимися в реляционной БД?

Форум — Development

Привет ЛОР!

Поскольку моя текущая работа сильно завязана на embedded и iot, я решил, что в свободное время от всего этого надо бы отдыхать, и собираюсь запилить очередное OpenSource-поделие.

В данном поделии предполагается работа и визуализация графов.

В теории графов не силен, зато хорошо знаю область деятельности, для которой буду писать софтинку.

В БД так же не силен, собственно хочу изучить реляционные БД с в свободное время.

Соответственно есть вопросы к уважаемым регистрантам и анонимусам. Эти вопросы я хочу постить здесь.

Итак, первая часть вопросов

Мне нужно будет хранить направленные ациклические графы в виде узлов и связей. Я хочу делать это так, чтобы эти самые графы можно было легко копировать.

В БД, будут таблицы:

  • графы
    • id
    • desc
  • узлы
    • id
    • graph -> графы.id
    • desc
  • связи
    • id
    • src -> узлы.id
    • dst -> узлы.id

Насколько я понимаю, при копировании графа мне придется:

  • вставить новую запись в «графы»
  • запросить её id
  • вставить дубликаты узлов с новым id
  • запросить их id
  • преобразовать старые id узлов для связей в новые
  • вставить связи с новыми id узлов

Во всем это мне не нравятся два предпоследних шага. Хочется облегчить себе работу и есть две альтернативных идеи:

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

  • добавить в «связи» колонку graph -> графы.id, добавить в «узлы» колонку num (номер узла в графе) и соответственно из колонок src и dst «связей» ссылаться не на узлы.id, а на узлы.num.

На самом деле номера узлов у меня уже генерируются процедуркой, которая строит граф, так что с склоняюсь к последней идее.

Вопросы:

  • Насколько правильно я понимаю что, надо делать?
  • Как правильно обращаться с такими графами в реляционной БД?
  • Если перечисленные варианты жизнеспособны, то в каких случаях какой из них целесообразно использовать?

 , ,

shkolnick-kun
()

Вышла библиотека YAFL

Новости — Open Source
Группа Open Source

Сегодня (10.04.2021) состоялся первый релиз библиотеки YAFL.

YAFL - это библиотека, написанная на Си, содержащая несколько алгоритмов Калмановской фильтрации, распространяемая под лицензией Apache-2.0.

Библиотека ориентирована на применение во встраиваемых системах на базе микроконтроллеров с аппаратной поддержкой вычислений с плавающей точкой.

Для прототипирования алгоритмов обработки сигналов с использованием YAFL предполагается использовать Python 3.5+ и написанное на Cython расширение yaflpy.

Отличительные особенности библиотеки:

  • библиотека нацелена на преимущественное использование статического выделения памяти;
  • по мере возможности использованы алгоритмы, минимизирующие кеш-промахи;
  • в YAFL реализованы квадратнокорневые варианты алгоритмов фильтрации на основе UDU-разложения;
  • применены численно-стабильные методы вычислений, а так же регуляризация;
  • библиотека содержит алгоритмы, в которых применены меры для:
    • устранения расходимости фильтров
    • взвешивания результатов измерений с целью снижения влияния промахов/помех.

YAFL находится на ранней стадии разработки, код и документация могут содержать ошибки. Текущая версия библиотеки: 0.10.0.

>>> Подробности

 , ,

shkolnick-kun
()

Rassbery Pi Pico / RP2040

Форум — Talks

Привет ЛОР. Кто знает, как в России купить сабж?

Из реселлеров только Sparkfun/Digikey/Adafruit, которые к нам не возят…

А линукс тут при том, что с его помощью я буду портировать BuguRTOS на сабж.

 ,

shkolnick-kun
()

Привет ЛОР, а что у нас с видеокартами?

Форум — Talks

Задумался об обновлении зеленой видюхи. Открыл сайты известных торговых сетей, а там какой-то тихий УЖОС с видеокартами:

  • либо затычки для слотов,
  • либо 3070 за 80+ тыс. руб..

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

Вопрос со звездочкой: стоит ли брать зеленые карточки с ebay?

Перемещено leave из linux-hardware

 , , ,

shkolnick-kun
()

[Решено] Arduino ThingsBoard помогите разобраться с шаблонами.

Форум — Development

Привет ЛОРчане!

Захотелось мне поуправлять своей ардуиной через одно известное облако.

У них даже есть свой типа SDK.

Проблема в том, что писали его в торопях и:

  • реализовали только ограниченный функционал RPC, прчем так, что с виджета knot, например, не получится поуправлять девайсом т.к. колбэк может возвращать только пары ключ-значение, но не может вернут real, например.

  • не реализовали подписку на атрибуты. Совсем.

Первый косяк я уже пофиксил, правда пришлось сломать совместимость с исходным api (нехорошо, но по другому было нельзя).

Сейчас думаю, как пофиксить второй косяк, но, т.к. я трогаю С++ второй раз в жизни, то есть определенные трудности понимания. В этой связи вопрос к плюсовикам: что значат вот эта строка и следующая?

По итогу обещаю выложить пофикшенную версию и сделать пулл-реквест. Doen! Спасибо @fsb4000!

 , ,

shkolnick-kun
()

USB-stick MBR Boot чем сделать?

Форум — Linux-install

Привет, ЛОР, есть один старинный EEE PC (2007 года), с офтопом XP.

Недавно там завелась зараза. Загрузить Live-образы с антивирусами от известных вендоров не получается, т.к. там давно x86_64 и UEFI.

Хочу запустить на нем какой-нить PuppyRus-i686 и из него попробовать запустить антивирь, или вообще снести офтоп.

Реквестирую утилит по типу MultibootUSB, с возможностью создания Live flash с MBR…

 , ,

shkolnick-kun
()

Си, «горячий код», несколько версий функции.

Форум — Development

Привет, кодач девеЛОРч, продолжаю делать очередное OpenSource поделие.

Само поделие тут.

Это будет либа с оценивающими фильтрами.

Особенности:

  • Старался писать КАК ДИДЫ в программе «Аполон».
  • No dynamic memory allocation.
  • Использование [ну типа] cache-aware алгоритмов.
  • Выполнение на архитектурах с аппаратной плавающей точкой.
  • Использование стабилизированных численных методов.
  • Принятие того факта, что у нас тут не NASA, соответственно, пользователи могут косячить в моделях процессов и наблюдений. Использование алгоритмов, которые позволяют хоть как-то сгладить последствия этих косяков.
  • Принятие того факта, что шумы могут быть не Гауссовы. Использование алгоритмов, которые позволяют хоть как-то сгладить последствия неверных гипотез о шумах.
  • Прототипирование на Python c использованием буквально тех же реализаций алгоритмов, что и в продакшоне, посредством Cython-обертки над либой.

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

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

Отличия могут быть довольно небольшими, но они сожрут какое-то количество мегафлопс и памяти.

Вопрос к знатокам:

Стоит ли делать несколько вариантов функций, как сейчас, или оставить самый сложный?

З.Ы.: И да, если это применять, например, при адаптивном подавлении шумов от производственного оборудования в наушниках у рабочего, то частоты вызова могут быть несколько килогерц (в данном случае - от восьми) для нескольких объектов, и звук будет идти с нескольких микрофонов.

 , , , ,

shkolnick-kun
()

Хочу выяснить пару вопросов про современные процессоры и компиляторы.

Форум — Development

Привет, ЛОР.

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

Библиотеку хочу сделать переносимой (чтоб работала и на микроконтроллерах/DSP и на х86-64, и т.д.), поэтому готовый код от вендоров в топку.

И тут возникли вопросы про векторно-матричные операции:

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

  • В каком виде лучше (с точки зрения оптимизации вычислений компиляторами) писать доступ к массивам?

Так:

#define _DO_MM(name, op1, op2)                                                             \
void name(libInt sr,  libInt scr, libInt sc, libFloat *res, libFloat *a, libFloat *b)      \
{                                                                                          \
    libFloat   *vr;                                                                        \
    libFloat   *vb;                                                                        \
    libInt      c;                                                                         \
    libInt      r;                                                                         \
                                                                                           \
    assert(res);                                                                           \
    assert(a);                                                                             \
    assert(b);                                                                             \
                                                                                           \
    while (0 < sr--)                                                                       \
    {                                                                                      \
        r  = scr;                                                                          \
        vb = b;                                                                            \
        c  = sc;                                                                           \
        vr = res;                                                                          \
        while (0 < c--)                                                                    \
        {                                                                                  \
            *vr++ op1 *a * *vb++;                                                          \
        }                                                                                  \
        a++;                                                                               \
                                                                                           \
        while (0 < --r)                                                                    \
        {                                                                                  \
            c = sc;                                                                        \
            vr = res;                                                                      \
            while (0 < c--)                                                                \
            {                                                                              \
                *vr++ op2 *a * *vb++;                                                      \
            }                                                                              \
            a++;                                                                           \
        }                                                                                  \
        res += sc;                                                                         \
    }                                                                                      \
}

_DO_MM(lib_mm,      =, +=)
_DO_MM(lib_add_mm, +=, +=)
_DO_MM(lib_sub_mm, -=, -=)

или Так:

#define _DO_MM(name, op1, op2)                                                             \
void name(libInt sr,  libInt scr, libInt sc, libFloat *res, libFloat *a, libFloat *b)      \
{                                                                                          \
    libInt      i;                                                                         \
    libInt      j;                                                                         \
    libInt      k;                                                                         \
                                                                                           \
    assert(res);                                                                           \
    assert(a);                                                                             \
    assert(b);                                                                             \
                                                                                           \
    for (i = 0; i < sr; i++)                                                               \
    {                                                                                      \
        for (k = 0; k < sc; k++)                                                           \
        {                                                                                  \
            res[sc*i + k] op1 a[scr*i] * b[k];                                             \
        }                                                                                  \
                                                                                           \
        for (j = 1; j < scr; j++)                                                          \
        {                                                                                  \
            for (k = 0; k < sc; k++)                                                       \
            {                                                                              \
                res[sc*i + k] op2 a[scr*i + j] * b[sc*j + k];                              \
            }                                                                              \
        }                                                                                  \
    }                                                                                      \
}

_DO_MM(lib_mm,      =, +=)
_DO_MM(lib_add_mm, +=, +=)
_DO_MM(lib_sub_mm, -=, -=)

З.Ы.: Больно не стукайте…

 , , omp,

shkolnick-kun
()

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