LINUX.ORG.RU

Избранные сообщения nionio35

Whatmade — демон для отслеживания изменений в директориях

Новости — Open Source
Whatmade — демон для отслеживания изменений в директориях
Группа Open Source

Что такое Whatmade?

Whatmade – демон, запоминающий, каким процессом был создан тот или иной файл в отслеживаемых директориях. Такое решение поможет в дальнейшем определить происхождение файлов со странными названиями.

Whatmade написан на языке C++ с использованием Linux fanotify API, распространяется под лицензией GNU GPL v3.

Особенности

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

Хотя это не делает демон бесполезным, это означает, что предоставляемую им информацию следует интерпретировать с осторожностью – при просмотре результатов по-прежнему рекомендуется критически относиться к ним.

Этот демон хранит данные процесса в расширенных файловых атрибутах.

Пользователям среды рабочего стола MATE предоставляется расширение для файлового менеджера Caja, выводящее информацию о процессе, создавшем выбранный файл, как это показано на скриншоте.

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

 , , , ,

PunkPerson
()

Linux + Guitar rig. А как правильно?

Форум — Desktop

Всем привет.

Загорелся идеей подключить гитару к пк чтобы играться со всякими эффектами и виртуальными педальками. Когда-то давно видел у соседа по общаше guitar rig - его и решил пробовать первым.

Не предвещая беды, сбегал в магазин и купил focusrite solo 3. Накатил виртуалку с оффтопиком, поставил риг, пробросил звуковуху в виртуалку, подключил гитару и…всё стало плохо. Звук со щелчакми, интерфейс постоянно отваливается, нужно добавлять заново. Короче, неюзабельно.

Почитав интернет, понял, что проблема в принципе массовая и связана с задержками при пробросе usb и чтобы нормально всё заработало, нужно пробросить usb-контроллер целиком на уровне pci-e шины через iommu, но мой ноутбук, на котором нужно всё развернуть, так не умеет.

Накатить guitar rig в wine не пробовал - чую, что будут всякие задержки и вообще из-за этого научусь играть так, что потом придётся переучиваться.

Собственно, вопрос. Кто как решает проблему и как правильно поступить? Ставить windows рядом второй системой только из-за рига? Попробовать в wine с прокладкой под asio? Или просто использовать другое по под онтопик? Guitarix выглядит каким-то куцым.

 , , ,

Hanuken
()

OpenZL 0.1.0

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

6 октября состоялся выпуск 0.1.0 фреймворка OpenZL, предназначенного для создания компрессоров данных без потерь.

В проект также входит демонстрационная консольная утилита zli.

Ян Колле (автор Zstandard) написал на форуме encode.su:

Мы открываем исходный код OpenZL – нового подхода к сжатию данных с акцентом на структурированные данные. В большинстве центров обработки данных имеются огромные потоки данных. Однако эти данные редко бывают «случайными» – как правило, они следуют чётко определенной схеме или формату. Обычно с этими форматами знакомы несколько инженеров.

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

>>> Исходный код на GitHub

>>> Анонс на encode.su

 , openzl, , ,

dataman
()

c3c 0.7.6

Новости — Разработка
Группа Разработка

4 октября состоялся выпуск 0.7.6 кроссплатформенного компилятора и стандартной библиотеки языка программирования C3.

C3 – это эволюция, а не революция: язык, похожий на C, для программистов, которые любят C.
C3 – это язык программирования, основанный на синтаксисе и семантике языка C, с целью его развития при сохранении привычности для программистов C.
Благодаря полной ABI-совместимости с C, можно без труда смешивать C и C3 в одном проекте. В качестве демонстрации, vkQuake был скомпилирован с небольшой частью кода, преобразованной в C3 и скомпилированной с помощью компилятора c3c.

Компилятор написан на языке C с использованием фреймворка LLVM (поддерживаются версии 17-22) и распространяется по лицензии GNU LGPL.
Стандартная библиотека распространяется по лицензии MIT.

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

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

 c3, , , ,

dataman
()

Читал про UEFI, много думал.

Форум — Talks

Господа, читайте и изучайте UEFI, если всё ещё не. Это базовая база нынче!

Я когда-то писал на ассемблере в школе-универе для развлечения бут-сектора для дискет и HDD, MBR это называлось - это такой 512-байтный самый первый сектор диска, который автоматически считывался BIOS на x86 в память по фиксированному адресу и управление туда передавали. У меня был ThinkPad 755C для развлечений. Далее ты всё должен был делать сам. В 512-байтный код надо было запихнуть самодельный примитивный парсер корня FAT12/FAT32, чтобы он нашёл в корне ФС некий условный файл /kernel.bin и передал туда управление - это твой условной grub или вообще сразу же ядро самописной маленькой OS - я писал детскую OS, которая переводила cpu в protected mode и умела параллельные задачи запускать - мигание какой-то лампочкой клавиатуры и считывание каких-то байтиков с неё и какой-то крутящийся курсор. Это был мой kernel.bin бугага.

А нынче эти времена поменялись. Теперь нет никакого BIOS - точнее теперь эту сущность стали называть просто бездушно firmware и это firmware должно соответствовать спецификации UEFI. UEFI - это стандарт внешних и (где-то внутренних) признаков, которые этот BIOS должен проявлять. Раньше как было - BIOS на каждой матери был устроен как захотят, главное чтобы умел int 10h (видео), int 13h (диск), int 16h (клавиатура) и какие-то другие программные прерывания обрабатывать. Ну и ещё было выражение «зайти в BIOS» - это какая-то F1 клавиша и синий экран с менюшками и там можно было save changed and exit - но такой фигни могло и не быть и BIOS всё равно у тебя был. Внутри этих прерываний был чёрный ящик тащемта и работало оно только в 16-bit real mode. Теперь всё это выкинуто нахер. UEFI - это прям как маленькая OS, которая изначально работает в protected mode, там есть концепции драйверов, даже приложений. Есть разные фазы загрузки всего. Оно умеет парсить FAT32 и доставать оттуда загрузчики и приложения и исполнять всё это.

UEFI умеет парсить FAT32, в которой лежат файлики .efi в формате windows PE (MZ в начале файла, микрософт оставила свой след, бугага). В FAT32 есть разные папочки, в них разные .efi файлики, часть из которых имеет фиксированные имена и содержит дефолтные загрузчики и загрузчик этой вашей убунты оформлен как /boot/efi/EFI/ubuntu/grubx64.efi а сама /boot/efi есть точка монтирования vfat-раздела на диске, и этот раздел «осознаётся» UEFI firmware на старте системы.

Ещё у UEFI есть стандарт на хранение кучи key=value переменных - «efivars» которые открыты на чтение-запись, часть из которых имеет фиксированные имена и форматы, а часть пользовательские, можно даже туда телефон бабушки положить и он будет лежать во флешке на матери. Эти переменные можно в линуксах увидеть тут: ls -l /sys/firmware/efi/efivars - оно невозбранно смонтировано как type efivars. В этих переменных лежит и порядок загрузки с разных разделов и ещё всякой дофига фигни, а GUI вашего BIOS нынче просто просматривет эти переменные, а не хранит «настройки BIOS» в каком-то своём формате в чёрном ящике.

Вместо BIOS-прерываний типа int 16h теперь какая-то там системная таблица протоколов, в которой можно найти EFI_SIMPLE_TEXT_INPUT_PROTOCOL и поюзать клавиатуру.

UEFI стартует за несколько разных строго определённых «фаз», в UEFI есть свой шелл с фиксированными командами, в UEFI есть драйверы, есть приложения, есть спецификация на гуй и вообще дохрена всего, я охренел.

Короче господа, изучайте UEFI чтобы не быть чертилой. Это нечто неиллюзорно большое, куда АНБ конечно же напихала своих драйверов и приложений и пока ваш ноут грузится, он может успеть и в интернет сходить, но хорошая новость может быть в том, что UEFI позволяет вам там это выключить или поменять логотип вашего тынкпада на загрузке.

 , ,

lesopilorama
()

Perl-Conf.Ru/25

Новости — Конференции и встречи
Группа Конференции и встречи

Perl-Conf.Ru/25 — это ежегодная встреча Perl-разработчиков в России. В 2025 г. конференция пройдёт в субботу 27 сентября. Happy birthday to Larry!

Миссия Perl-Conf.Ru — поддерживать российское Perl-сообщество, способствовать обмену опытом и лучшими практиками, быть площадкой для общения коллег, аккумулировать экспертизу по Perl.

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

>>> Подробности на perl-conf.ru

 ,

dataman
()

Почему pipewire такой сложный?

Форум — Talks

Захотел написать простейшую программу, которая будет считывать звук с микрофона. Как-то очень сложно получилось, это тупо абсолютный минимум, чтобы просто печатать сэмплы в stdout:

#include <pipewire/pipewire.h>
#include <spa/param/audio/format-utils.h>
#include <stdio.h>

struct stream_data {
  struct pw_stream *stream;

  enum spa_audio_format audio_format;
};

static void main_loop_signal(void *data, int signal_number);

static void stream_param_changed(void *data, uint32_t id, const struct spa_pod *param);

static void stream_param_format_changed(void *data, const struct spa_pod *param);

static void stream_process(void *data);

int main(int argc, char *argv[]) {
  pw_init(&argc, &argv);

  struct pw_main_loop *main_loop = pw_main_loop_new(NULL);

  struct pw_loop *loop = pw_main_loop_get_loop(main_loop);

  pw_loop_add_signal(loop, SIGINT, main_loop_signal, main_loop);
  pw_loop_add_signal(loop, SIGTERM, main_loop_signal, main_loop);

  struct pw_properties *stream_properties = pw_properties_new(PW_KEY_MEDIA_TYPE, "Audio", PW_KEY_MEDIA_CATEGORY,
                                                              "Capture", PW_KEY_MEDIA_ROLE, "Accessibility", NULL);

  struct pw_stream_events stream_events = {
      .version = PW_VERSION_STREAM_EVENTS,
      .param_changed = stream_param_changed,
      .process = stream_process,
  };

  struct stream_data stream_data;

  struct pw_stream *stream = pw_stream_new_simple(loop, "tuktuk", stream_properties, &stream_events, &stream_data);
  stream_data.stream = stream;

  const struct spa_pod *stream_connect_params[1];

  uint8_t spa_pod_builder_buffer[1024];
  struct spa_pod_builder spa_pod_builder = SPA_POD_BUILDER_INIT(spa_pod_builder_buffer, sizeof(spa_pod_builder_buffer));
  struct spa_audio_info_raw spa_audio_info_raw = SPA_AUDIO_INFO_RAW_INIT(.format = SPA_AUDIO_FORMAT_UNKNOWN);
  stream_connect_params[0] = spa_format_audio_raw_build(&spa_pod_builder, SPA_PARAM_EnumFormat, &spa_audio_info_raw);

  pw_stream_connect(stream, PW_DIRECTION_INPUT, PW_ID_ANY, PW_STREAM_FLAG_AUTOCONNECT, stream_connect_params,
                    sizeof(stream_connect_params) / sizeof(stream_connect_params[0]));

  pw_main_loop_run(main_loop);

  pw_main_loop_destroy(main_loop);

  pw_deinit();
}

static void main_loop_signal(void *data, int signal_number) {
  struct pw_main_loop *main_loop = data;
  pw_main_loop_quit(main_loop);
}

static void stream_param_changed(void *data, uint32_t id, const struct spa_pod *param) {
  switch (id) {
    case SPA_PARAM_Format:
      stream_param_format_changed(data, param);
      break;
  }
}

static void stream_param_format_changed(void *data, const struct spa_pod *param) {
  uint32_t media_type;
  uint32_t media_subtype;
  if (spa_format_parse(param, &media_type, &media_subtype) < 0) {
    fprintf(stderr, "Failed to parse format");
    return;
  }

  if (media_type != SPA_MEDIA_TYPE_audio || media_subtype != SPA_MEDIA_SUBTYPE_raw) {
    fprintf(stderr, "stream_param_format_changed media_type=%u media_subtype=%u\n", media_type, media_subtype);
    return;
  }

  struct spa_audio_info_raw audio_info_raw;
  spa_format_audio_raw_parse(param, &audio_info_raw);

  enum spa_audio_format audio_format = audio_info_raw.format;

  if (audio_format != SPA_AUDIO_FORMAT_DSP_F32) {
    fprintf(stderr, "stream_param_format_changed audio_format=%d\n", audio_format);
  }
}

static void stream_process(void *data) {
  struct stream_data *stream_data = data;
  struct pw_stream *stream = stream_data->stream;

  struct pw_buffer *pw_buffer = pw_stream_dequeue_buffer(stream);

  if (pw_buffer == NULL) {
    pw_log_warn("out of buffers: %m");
    return;
  }

  struct spa_buffer *spa_buffer = pw_buffer->buffer;

  struct spa_data *spa_data = &spa_buffer->datas[0];

  struct spa_chunk *spa_chunk = spa_data->chunk;

  float *samples = spa_data->data;
  uint32_t sample_count = spa_chunk->size / sizeof(float);

  for (uint32_t i = 0; i < sample_count; i++) {
    printf("%f\n", samples[i]);
  }

  pw_stream_queue_buffer(stream, pw_buffer);
}

Почему всё так сложно? Должно же быть проще. Зачем аудио-библиотеке выдумывать какие-то main loop-ы, это же не её дело. Почему такие хитрые API. Почему конфигурация через строки. Сложно, очень сложно, надо проще. И все хвалят этот pipewire. А я вот не хвалю, мне не понравилось.

Ещё добавлю, что документации там вообще около нуля. Вот наглядный пример: pw_main_loop_new

Что делает функция pw_main_loop_new? «Create a new main loop.». Да что вы говорите. Что она возвращает? «a newly allocated Main Loop». Да что вы говорите. А бывают ли ошибки? Ой, не написано. А что передаётся в параметре props? Ой, не написано. И это ещё хорошо документированная функция, в куче других и того нет.

 , ,

vbr
()

«Запечь» картинки в html файле

Форум — Web-development

Здравствуйте.

Есть простейшая «страница.html» рядышком каталог «/страница.html.files», в каталоге картинки, только картинки, и ничего, кроме картинок, теги <img> страницы.html на эти картинки ссылаются.

Меня интересует способ отвязать эту страницу от папки, преобразовав ссылки на картинки в прямые их base64-описания. Всё, что находил по теме - либо не работает, либо не то.

Интересуюсь у добрых людей, вдруг случайно у кого-нибудь в копилочке есть рабочий сервис такого рода.

Спасибо за внимание.

Перемещено ilinsky из talks

 , , ,

piyavking
()

А посоветуйте странных, майндфаковых фильмов ужасов ну или триллеров/мистики

Форум — Talks

Таких фильмов где страшно, не от скримеров и тд, а от обстановки что ли. Например: фильм «Ведьма» 2015 года. Сцена с похищением ребёнка вообще тихая, страшно от неожиданности. В «Сибириаде» (да, это не фильм ужасов, но отрывок мощный) сцена на болоте где непонятно откуда опускается на плечо рука тоже впечатлила оче. «Мёртвые ласточки» - там вообще показывают с двух ракурсов. Один сыпет на стол монеты, а второй видит, что это просто лесные шишки, но акцент на этом оператор не делает, ты это замечаешь сам.

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

 , , ,

karton1
()

nevermind-neu библиотека машинного обучения

Форум — Development

Доброго времени суток, публикую свою разработку, а именно библиотеку машинного обучения nevermind-neu. Идея изначально появилась из желания хорошо понять как работают нейронные сети и изучить rust, а для того чтобы понять, лично мне нужно написать самому. Далее вся эта разработка затянула меня и вышло в то что вышло. Кратко опишу текущие возможности библиотеки:

  • Слои: полносвязный, пока что 1 :(
  • Функции потерь: Эвклидова потеря, Кросс-энтропия(softmax loss).
  • Функции активации: relu, sigmoid, tanh, leaky_relu
  • Стандартные оптимизаторы: Adam, RMSProp, AdaGrad, AdaDelta
  • Асинхронная паралельная подготовка батчей
  • Датасет лоадеры: CSV, Protobuf
  • Сериализация состояния модели нейронной сети: protobuf (позже numpy добавлю)
  • Сериализация конфигурации модели нейронной сети: yaml
  • Поддержка OpenCL вычислений, используя ocl crate
  • Так называемая утилита tool (нужно что-то придумать с названием), который позволяет обучать модели(с нескучным cli интерфейсом), тестировать их, создавать конфигурации моделей в cli режиме.

В качестве библиотеки матричной математики на CPU используется ndarray, который использует matrixmultiply , который под капотом использует simd ядра для умножения матриц. Для OpenCL написал собственные ядра. Я сравнивал свою библиотеку на mnist датасете с достаточно популярной dfdx и она конечно же оказалась быстрее процентов на 60%. Знаю, что она не так много использует Rc-RefCell, но думаю, что основная «загвоздка» производительности не в этом. С другими либами на расте не сравнивал, поскольку отсутствовал example с mnist и др. датасетами. В ближайшее время буду делать паралельное оптимизирование параметров и искать некоторый консенсус когда использовать параллельные итераторы, а когда нет, поскольку производительность сильно падает при их использовании на маленьких слоях(< 64 нейронов).

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

В качестве приложения также сделал небольшой проектик-пример предоставляющий возможность на основе библиотеки создать своего шахматного бота из датасетов lichess. Инструкции чтобы обучить и сыграть указаны по ссылке . Если возникнут трудности то отпишите - постараюсь помочь. Обучить можно как с использованием OpenCL, так и без. Натренированные модели для белых и черных можно скачать тут внизу страницы.

Гитхаб репа

MNIST example

 , , ,

xionovermazes
()

ELinks 0.18.0

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

Состоялся выпуск текстового веб-браузера ELinks 0.18.0.

Некоторые из возможностей:

  • поддержка протоколов http, https, brotli, bittorrent, finger, fsp, ftp, sftp, gemini, gopher, nntp, samba;
  • экспериментальная поддержка JS (с помощью SpiderMonkey/QuickJS/MuJS);
  • пользовательские скрипты (Perl/Python/Lua);
  • экспериментальная поддержка libsixel;
  • работа в ядерной консоли с мышкой (GPM).

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

>>> Релиз на GitHub

>>> Исходный код проекта

 , ,

tnray
()

Wine-dows

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

Вайн поддерживает темы Win-XP. И для KWin есть темы в стиле десятки и Aero. (конкретно эта тема, – смесь аэро и десятки)

На скриншоте изображён мод-менеджер для Fallout New Vegas, с установленным модом Soul Of Fallen Worlds, и дополнениями «Ruined America». (Это склеенные между собой игры Fallout NV и Fallout 3, а так-же множество модов объединённых в модули: Сюжетные квесты, снаряга, Интерьеры, QoL, фиксы, модификации движка).

Короче я из Фоллаута 3 летаю в Фоллаут-НВ на вертолёте, так-то!

Каша-ОС (CachyOS). Ryzen 5600G, 16GB RAM, Samsung SSD 2TB, Video – встройка.

 , , , ,

Set440
()

ESP32 для датчиков DS18B20 + RPi

Форум — Linux-hardware

Имеется raspberry pi 4B, к которому я собираюсь подключать датчик температуры (DS18B20 2 штуки, один - в комнате, другой - на улице), также планируется купить ESP32, для того, чтобы измерять температуру воды в уличном бассейне, так как он находится на удалении от rpi, то передача данных будет осуществляться по Wi-Fi.

Мне пришла мысль, что можно взять ещё один ESP32, который будет находится в непосредственной близости от rpi и куда я подключу комнатный и уличный датчики (и, например, датчик влажности, угарного газа и т.п.), чтобы не разводить геморрой с проводами на rpi. В таком случае основная функция rpi будет заключаться в том, чтобы раз в 15 минут опрашивать все датчики, записывать полученные данные в mysql и выводить информацию на небольшой e-ink дисплей.

Изначально я думал, что датчики будут раз в 15 минут запрашивать температуру, выкидывать html или json, который я в свою очередь буду парсить с rpi. Но этот вариант я откинул, потому что скрипты придется запускать практически одновременно и любой рассинхрон (например - отключение одного из датчиков, отключение электричества и т.п.) приведёт к тому, что в БД попадут неактуальные данные.

Отсюда два вопроса:

  1. Подойдут ли в случае, описанном в последнем абзаце, датчики типа DS3231, если помимо температуры на html странице будет отображаться и точное время, которое затем будет парситься и записываться в БД?

  2. Насколько вообще оптимальна схема (когда rpi занимается только обработкой данных, а все датчики висят на ESP32)?

 , ,

psh511
()

Как заставить Google Chrome считать валидным Self-Signed сертификат?

Форум — Admin

У меня есть приложуха в докере. Проксирую запросы на неё через nginx. Nginx использует серты, которые я сгенерил через mkcert. Открываю страничку в хроме на виндовой тачке - сохраняю серт, добавляю его в корневые сертификаты, перезапускаю браузер. В firefox всё ок, а в хроме https сессия открывается, но подсвечена красным, типа не валидна. Не могу заставить хром считать её валидной. Посоветуйте как исправить?

 ,

udcccc
()

Посоветуйте домашнюю ip камеру

Форум — Talks

Добрый день!

Для наблюдения за квартирой в моменты командировок и поездок пользуюсь домашней ip камерой. Камера работает в домашней сети wifi без доступа в интернет (при помощи firewall на роутере). Для просмотра изображения с камеры - подключаюсь к ней через vpn с телефона при помощи приложения «ip cam viewer». К сожалению, моя старая камера (vstarcam) окончательно пришла в негодность и хотелось бы получить от вас совет, что можно приобрести на её замену. Понятно, что можно посмотреть у vstarcam замену, но хотелось бы понять, какие ещё есть варианты у других производителей.

Мои требования к камере:

  • (жёсткое требование) Использование камеры возможно без доступа этой камеры в интернет (то есть, все камеры, работа с которыми возможна только при помощи приложений на телефоне, которые работают через чьи-то сервера - сразу мимо)
  • (жёсткое требование) Камера должна иметь веб-интерфейс
  • (жёсткое требование) Камера должна уметь не только снимать видео, но и делать snapshot изображения в (jpg или png).
  • (жёсткое требование) Камера должна уметь работать по wifi
  • (жёсткое требование) Камера должна записывать видео на microSD карту
  • (было бы не плохо) желательно, чтобы у камеры был поворотный механизм
  • (было бы не плохо) зарядное устройство подключается не «штырьком», а через интерфейс usb (type-c, micro usb)

Буду благодарен за предложенные советы :)

 ,

WeiH
()

open source gps tracker?

Форум — Talks

хочется странного: хочу писать gps трек. 80% использования в машине, иногда в снегоходе. пешее ношение пока не требуется, чет я не дорос. если нет интернета — писать на флешку. если есть интернет, например wifi, отправить, но не абы куда в чужое облако, а себе, на свой хостинг. неплохо было бы у себя развернуть open street map и смотреть трек в риалтайме, при наличии интернета.

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

 , , ,

Rastafarra
()

PlutoVG 1.0.0

Новости — Разработка
Группа Разработка

11 марта состоялся первый значительный выпуск 1.0.0 библиотеки двухмерной векторной графики PlutoVG, написанной на языке C и распространяемой по лицензии MIT. У библиотеки нет сторонних зависимостей.

Возможности библиотеки:

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

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

>>> Список изменений на GitHub

 , , ,

dataman
()

FireJail — краткое и ознакомительное практическое руководство

Статьи — Desktop
FireJail — краткое и ознакомительное практическое руководство

Сейчас существует прорва механизмов изоляции приложений — от песочниц до виртуальных машин. Целей их применения тоже множество, но так или иначе всё сводится к тому что нужно ограничить доступ приложений к тем или иным ресурсам вычислительного устройства.

Ниже я хочу описать почти золотую середину в лице утилиты firejail в виде практических советов по использованию в первую очередь для обычных пользователей и (возможно) разработчиков.

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

 , , , ,

LINUX-ORG-RU
()

Как писать программы для esp32?

Форум — Development

Как-то так сложилось, что в руки попала esp-wroom-32 и попросили для неё написать программы.

Есть небольшой опыт программирования на ассемблере для avr: работа с прерываниями по таймеру и взаимодействие по UART. Для этого достаточно:

  • текстового редактора
  • avr-gcc
  • avrdude
  • make (опционально)

Для stm32 на LOR’е опубликован шикарнейший цикл статей. Спасибо, @vbr! На практике, признаюсь, пока не пробовал.

А как быть с esp32? В официальной инструкции рекомендуется использовать ESP-IDF (integrated development framework, если правильно помню). Я попробовал загрузить базовые примеры («Привет, Мир!» и помигать диодиком) и пришёл в ужас от того, как эта Python поделка секунд >10 это дело загружает.

Также попробовал это дело через Arduino IDE, только базовые примеры сам уже написал. Гораздо быстрее всё грузится, но всё равно – такое себе.

Какой необходимый минимум программ, чтобы работать с esp32?

 ,

Jullyfish
()

Запущен Qwen Chat

Новости — Интернет
Группа Интернет

Команда разработчиков языковых моделей Qwen выпустила веб-версию чата, где можно опробовать их модели, которые ранее можно было скачать и использовать любой желающий, например, с сайта Qwen AI или же с Hugging Face. Там, например, есть модель с 72 миллиардами параметров. Qwen является разработкой китайской Alibaba Cloud.

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

>>> Попробовать

 , , , ,

rtxtxtrx
()