LINUX.ORG.RU

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

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

Программы, которые не тормозят

Форум — Desktop

С каждым годом программы тормозят все больше, от базовых утилит, до операционных систем и bios.

Предлагаю составить список программ, которые работают быстро, или терпимо.

Но для начала я напишу то чего стоит избегать

  • qt5, qt6, gtk3, gtk4 они тормозят, открываются с задержкой, есть ощутимый лаг при взаимодействии
  • electron
  • wxWidgets если в качестве бекенда используется gtk3 или qt5
  • старые версии программ, например xfce до перехода на gtk3, или xpdf до перехода на qt5. они не тормозили, но они уже не развиваются, интереснее узнать что есть из живого, или хотя бы такого что будет легко установить без перекомпиляции

Программы которые работают терпимо

  • xfe файловый менеджер (не путать с xfce http://roland65.free.fr/xfe/ )
  • (x)nedit простой текстовый редактор c номерами строк и подсветкой
  • grafx2 рисовалка, ориентирована на pixelart
  • mpv просмотр видео
  • palemoon браузер. с отключенным javascript, ощущается приятно, открывает больше чем какой нибудь netsurf
  • OpenOffice офис. тормозит но тормозит намного быстрее чем LibreOffice
  • xdm дисплейный менеджер
  • jwm, icewm оконные менеджеры похожие на windows, быстрые и не требующие сложной настройки
  • cmus аудиоплеер с двухпанельностью. консольный что минус, но быстро работает с библиотекой, сканирует, поддерживает cp1251
  • mutt+msmtprc консольный почтовик, относительно легко настроить и управлять

Пользователь d советует рассмотреть проекты

  • suckless
  • pwmt

Пользователь xsaeta рекомендует

  • zzzfm двухпанельный файловый менеджер
  • nsxiv просмотрщик изображений
  • mpd для музыки
  • ClawsMail почтовик
  • приложения Trinity
  • приложения LXDE
  • Pidgin — мультипротокольный IM-клиент на GTK+2

Пользователь tiinn подсказывает XPaint программу для рисования

Пользователь posixbit рекомендует

  • SpaceFM (очень быстрый и мощный файловый менеджер GTK+ 2 с большим количеством плагинов).
  • Double Commamder (версия GTK+ 2; быстрый двухпанельный файловый менеджер, почти полная копия Total Commander).
  • Sylpheed (классический и самый быстрый почтовый клиент; GTK +2).
  • LillyTerm (терминал с настройкой через графический интерфейс на GTK+ 2), st (самый простой терминал; не использует Qt и GTK), Kitty (простой терминал, но с GPU-ускорением) {{MOPKOBKA: Kitty у меня тормозит}}.
  • Rainbow-CM, Parcelite (менеджеры буфера обмена на GTK+ 2).
  • Zathura-PDF-MUPDF (самая быстрая читалка PDF — именно эта версия с MuPDF, а не Poopler).
  • LXTask (диспетчер задач; можно собрать с GTK+ 2).
  • Cinelerra GG (самый быстрый, но довольно функциональный видеоредактор под Linux; не использует Qt и GTK).
  • GMPC (музыкальный плеер — быстрый и мощный графический клиент GTK+ 2 к mpd).
  • TransGUI (самый быстрый и лёгкий торрент-клиент; использует GTK+ 2, требует для работы установленный и запущенный transmission-daemon).
  • CudaText-GTK2 (довольно быстрый и развивающийся текстовый редактор, вдохновлённый SublimeText). {{MOPKOBKA: У меня тормозит}}
  • LiteXL (довольно быстрый текстовый редактор на Lua; не использует Qt и GTK). {{MOPKOBKA: на SDL2 думаю будет тормозить, не пробовал}}
  • Abiword (лёгкий и функциональный текстовый процессор) и Gnumeric (самый быстрый и функциональный табличный процессор под Linux; великолепная совместимость с xls/xlsx) — обе эти программы можно собрать с GTK+ 2. {{MOPKOBKA: У меня тормозит}}
  • Dia (лёгкий редактор диаграмм, схем и графиков; на GTK+ 2).
  • FreeOffice (самый быстрый офисный пакет под Linux, имеет хорошую совместимость с файлами Microsoft Office; использует Xlib, а не Qt или GTK).
  • ImageMagick-GUI (различные быстрые операции над изображениями; не использует Qt и GTK).
  • AzPainter (быстрый, но мощный графический редактор на Xlib).
  • Oculante (быстрый просмотрщик изображений; не использует Qt и GTK). {{MOPKOBKA: Rust}}
  • maim (простая, но гибкая утилита для создания скриншотов с настройкой через консольные команды; не использует GTK и Qt); {{MOPKOBKA: Не пробовал, но мне нравится scrot}}
  • Dunst (простейший центр уведомлений; не использует Qt и GTK).
  • FTP/SFTP-менеджер gFTP (GTK+ 2)
  • IRC-клиенты HexChat (GTK+ 2) и XChat-SE (Xlib) {{MOPKOBKA: HexChat все }}

Пользователь firkax советует свой WM https://dev.m1089.ru/fwmx

Коллективный анон советует

  • moc(p) - TUI
  • mpg123/ogg123 - CLI
  • xcalc - калькулятор {{MOPKOBKA: Входит в набор X11 Applications, там все хорошо работает, но не все актуально}}
  • https://codeberg.org/newsraft/newsraft - rss читалка

Пользователь vbcnthfkmnth123 рекомендует

Пользователь stabilitron рекомедует

  • ffplay - игрок видео, аудио, стримов, гифок, картинок и пр. {{MOPKOBKA: Программка проекта ffmpeg}}

Пользователь SPRATAY исползует

  • Bluetui - TUI for managing bluetooth on Linux
  • Lazygit - simple terminal UI for git commands

У пользователя dhubsith на скриншоте в LQ обнаружил

  • Avidemux - Редактор видеофайлов

Якобы не тормозят, но у меня тормозят еще как

  • gpu ускоренные терминалы
  • xterm, rxvt, vte терминалы
  • AbiWord замена ворда
  • SublimeText текстовый редактор
  • vim, emacs в любом виде

 , ,

MOPKOBKA
()

termbox2 2.5.0

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

28 декабря, после более чем двухлетнего перерыва, состоялся выпуск 2.5.0 библиотеки для создания TUI termbox2, написанной на языке C и распространяемой по лицензии MIT.

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

>>> Исходный код версии 2.5.0 на GitHub

 , , ,

dataman
()

Сайты на древних технологиях - Во имя бобра!

Форум — Web-development

LOR славится своими специалистами по самым шизанутым вопросам. И вот у меня их есть.

Короче, современный веб - это звездец. Сайты жрут дохера ресурсов, бесконечные прокрутки, оптимизированный под мобилу размер текста итд.

У всего этого много разных причин, но одна из них - а потому что современные веб-технологии это позволяют.

Что же касается негативных эффектов у этой ситуации, то есть один, о котором задумываются редко. Чем сложнее веб - тем сложнее создать и поддерживать под него веб-браузер. Соответственно, рынок браузеров поделён между буквально несколькими крупными игроками: Хром Идж Фокс Сафари, а остальные браузеры в рамках статпогрешности. И это не есть хорошо.

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

Короче идея такая чтобы сайты были на примитивных технологиях. Но не ради прикола или ностальгии, а так сказать с практическими целями: А) Чтобы работало на медленном коннекте (не везде в мире интернет быстрый, да и приколы со всякими замедлениями итп никто не отменял), Б) Чтобы не жрало ресурсы (опять же, не у всех в мире компы мощные, и ситуации в экономике тоже бывают разными: сегодня у тебя типа блокчейн крипта нейронки, а завтра ты в землянке с аналогом IBM PC XT из веток), В) Чтобы работало не только в крутых мейнстримовых брозуерах, но и в стареньких или доморощенных.

Я бы запилил, но у меня лапки. Может оно уже есть?

 , , ,

jsx_
()

gpu.cpp — библиотека для вычислений на GPU

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

gpu.cpp — лёгкая переносимая библиотека для вычислений на графических сопроцессорах. Для работы требуется только компилятор C++, поддерживающий стандарт С++17 (разработчики почему-то настаивают на clang), и сама библиотека. Заявляется работа на любых устройствах, поддерживающих Vulkan, Metal, или DirectX.

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

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

 ,

Ygor
()

Как прокинуть директорию в Qemu?

Форум — Linux-install

Я хочу запустить qemu так, чтобы там стал доступен stage3 без скачивания изнутри из интернета.

Для этого я запускаю машину как-то так:

qemu-system-x86_64 -enable-kvm -smp 10 -m 16G  -display gtk -vga virtio \
    -drive file=./disk.qcow2,if=virtio \
    -fsdev local,id=fsdev0,path=./stage3,security_model=mapped \
    -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=stage3 \
    -netdev bridge,br=bridge0,id=net1 \
    -device virtio-net-pci,netdev=net1 \
    -cdrom admincd-amd64.iso \
    -boot d

# readlink admincd-amd64.iso 
/srv/iso/gentoo/admincd-amd64-20240324T164906Z.iso

Архив stage3 распаковал командой tar xf в директорию ./stage3

Проблема в том, что когда загрузка выполняется, там внутри

zgrep "9P" /proc/config.gz
# CONFIG_NET_9P is not set

В общем, при монтировании командой

mount -t virtiofs stage3 /mnt/stage3

dmesg говорит

virtio-fs: tag <stage3> not found

Правильно ли я понимаю, что дистроделы не учли такой вариант и не собрали как следует ядро, для работы в виртуалках?
Есть ли .iso-файл специально для установки в виртуалки?

 , virtiofs

Shushundr
()

Протестировал easy-diffusion

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

Easy-diffusion — это локальная программа, которая генерирует изображения посредством нейросетей. Для запуска необходимо скачать репозитарий с гитхаба — https://github.com/easydiffusion/easydiffusion — и запустить ./start.sh в директории репозитария. Далее установщик позаботится обо всем остальном и скачает все зависимости. В требованиях для запуска необходима карта Nvidia или AMD. Поддерживаются CUDA и ROCM соотвественно. Также поддерживается рендер изображений и на процессоре.

Для генерации изображения необходимо указать следующие параметры:

  1. промпт — набор слов, указывающий что конкретно необходимо сгенерировать, обязательно;
  2. отрицательный промпт — набор слов, указывающий что *не надо* генерировать; опционально, но с ним получается контролировать более точно;
  3. seed — значение, отвечающее за уникальность изображений; можно ввести вручную или выбрать автоматическую генерацию;
  4. число изображений, по умолчанию 1;
  5. модель, отвечает за стиль изображения: реалистичный. мультяшный и так далее; обязательна; обычно у модели есть одно или несколько ключевых слов для указания в промпте;
  6. лора, содержит в себе набор для генерации одного или нескольких изображений. Необязательна, но с ней можно быстрее получить нужный результат;
  7. Sampler — способ обработки;
  8. Guidance Scale — параметр, который контролирует, насколько процесс генерации изображения следует текстовой подсказке;
  9. количество шагов, собственно, указывает, сколько шагов будет уходить на генерацию изображения; больше число шагов — изображение получается более качественным, меньше — менее качественным;
  10. VAE — в основном, используется для увеличения насыщенности и яркости изображения, но иногда меняет стиль изображения;
  11. размер изображения. Обычно модель заточена под определенный размер и если размер изображения будет слишком сильно отличаться, то то и результат будет отличаться. Если размер изображения будет сильно меньше, то результатом будет нечитабельная мазня. Если не слишком сильно, то может сгенерировать только часть изображения. В случае увеличением размера изображения слишком сильно, могут появиться различные различные артефакты при генерация, например дополнительные руки и ноги. Кроме того, вырастет потребление видеопамяти;
  12. Clip Skip. Не совсем понимаю, что значит этот параметр; обычно в описании лоры указывается, надо его использовать или нет.

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

Также у лоры есть свое значение. Обычно лора слишком сильная, поэтому её значение делается небольшим, чтобы её ослабить и получить более красивый результат.

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

У лоры могут быть ключевые слова или слово. Может не быть. Всё зависит от конкретной лоры.

У меня алгоритм для генерации изображения обычно такой:

  1. беру модель;
  2. беру лору;
  3. беру промпт;
  4. беру отрицательный промпт;
  5. беру seed. Обычно из примера лоры, если в примере нет, то беру из какого-то другого рандомного примера;
  6. прогоняю это все для генерации через несколько моделей по одному изображению;
  7. выбираю изображение с той модели, которая мне больше всего понравилась;
  8. генерирую 100 изображений с этой моделью, лорой, промптом, сидом и отрицательным промптом;
  9. из этих 100 изображений выбираю одно подходящее.

Конкретно здесь у меня изображение со следующими настройками:

Seed: 2851093873
Dimensions: 512x768
Sampler: euler_a
Inference Steps: 30
Guidance Scale: 7
Model: bs_1500
Clip Skip: yes
Prompt: sketch, black souls, bs, masterpiece, high quality, blpioneer, 1boy, cowboy shot, covered eyes, shadow on eyes, brown hair, long blue winter coat, white scarf, outdoors, park, evening, walking, winter, hands in pockets, side view,
Lora Model: blpioneer, add_detail
Lora Strength: 0.8,0.5

 , ,

vbcnthfkmnth123
()

Посоветуйте гайд по java

Форум — Development

Требования: годно, опенсорсно, чтоб я мог по нему обучить человека типа «женщина». Прямо вот чтоб «сразу в банк» не надо, скорее это для автоматизации тестирования.

 , ,

salozar
()

Не могу поморгать диодом из C

Форум — Development

Хочу поморгать диодом без библиотек. В целом сетап описан тут. Процессор STM32F030F4P6. Диод подключен, насколько я могу судить, к ноге PA4.

На текущий момент конфигурация такая:

Makefile:

CC = arm-none-eabi-gcc
AS = arm-none-eabi-as
LD = arm-none-eabi-ld
CFLAGS = -mthumb -mcpu=cortex-m0 -O0

.PHONY: all flash

all: app.bin

crt.o: crt.s

app.elf: linker.ld crt.o blink.o
	$(LD) -T linker.ld -o app.elf crt.o blink.o

app.bin: app.elf
	arm-none-eabi-objcopy -O binary $< $@

flash: app.bin
	st-flash --reset write $< 0x8000000

crt.s:

.cpu cortex-m3
.thumb

.word 0x20005000
.word _reset
.thumb_func
_reset:
  bl blink
  b .

linker.ld:

MEMORY {
  FLASH(rx): ORIGIN = 0x08000000, LENGTH = 16K
  RAM (xrw): ORIGIN = 0x20000000, LENGTH = 4K
}

blink.c:

#include <stdint.h>

const uint32_t RCC_BASE = 0x40021000;
const uint32_t GPIOA_BASE = 0x48000000;
const uint32_t RCC_AHBENR_OFFSET = 0x14;
const uint8_t RCC_AHBENR_IOPAEN_BIT = 17;
const uint32_t GPIOx_MODER_OFFSET = 0x00;
const uint8_t GPIOx_MODER_MODE4_BIT_OFFSET = 8;
const uint32_t GPIOx_ODR_OFFSET = 0x14;
const uint8_t GPIOx_ODR_OD4_BIT = 4;

void bit_clear(uint32_t address, uint8_t bit);
void bit_set(uint32_t address, uint8_t bit);
void bit_toggle(uint32_t address, uint8_t bit);

void blink(void) {
  bit_set(RCC_BASE + RCC_AHBENR_OFFSET, RCC_AHBENR_IOPAEN_BIT);
  bit_set(GPIOA_BASE + GPIOx_MODER_OFFSET, GPIOx_MODER_MODE4_BIT_OFFSET);
  bit_set(GPIOA_BASE + GPIOx_ODR_OFFSET, GPIOx_ODR_OD4_BIT);
  volatile uint32_t counter = 0;
  while (1) {
    if (counter % 0x10000 == 0) {
      bit_toggle(GPIOA_BASE + GPIOx_ODR_OFFSET, GPIOx_ODR_OD4_BIT);
    }
    counter++;
  }
}

void bit_clear(uint32_t address, uint8_t bit) {
  uint32_t mask = 1 << bit;
  volatile uint32_t *ptr = (uint32_t *) address;
  *ptr &= ~mask;
}

void bit_set(uint32_t address, uint8_t bit) {
  uint32_t mask = 1 << bit;
  volatile uint32_t *ptr = (uint32_t *) address;
  *ptr |= mask;
}

void bit_toggle(uint32_t address, uint8_t bit) {
  uint32_t mask = 1 << bit;
  volatile uint32_t *ptr = (uint32_t *) address;
  *ptr ^= mask;
}

Адреса брал из RM0360:

2.2.2 Memory map and register boundary addresses

AHB2 0x4800 0000 - 0x4800 03FF GPIOA
AHB1 0x4002 1000 - 0x4002 13FF RCC

7.4.6
Reset and clock control (RCC)
AHB peripheral clock enable register (RCC_AHBENR)
Address offset: 0x14
Bit 17: IOPAEN: I/O port A clock enable

8.4.1
GPIO port mode register (GPIOx_MODER)
Address offset:0x00
Bits 9:8 Port configuration bits
01: General purpose output mode

8.4.6
GPIO port output data register (GPIOx_ODR)
Address offset: 0x14
Bit 4: Port output databit

Насколько я понял из чтения документации:

  1. Нужно настроить регистр RCC_AHBENR и включить I/O port A.
  2. Нужно настроить регистр GPIOx_MODER и включить output mode для PA4.
  3. Для включения/выключения диода нужно менять бит GPIOx_ODR.

Возможно код на C неправильный, я его знаю плохо, пытался писать максимально просто.

На CubeMX пример с HAL копипастил, он работает, диод моргает. Ниже приведу на всякий случай:

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2023 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_4);
	HAL_Delay(100);
  }
  /* USER CODE END 3 */
}

/**
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

  /** Initializes the CPU, AHB and APB buses clocks
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    Error_Handler();
  }
}

/**
  * @brief GPIO Initialization Function
  * @param None
  * @retval None
  */
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOA_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);

  /*Configure GPIO pin : PA4 */
  GPIO_InitStruct.Pin = GPIO_PIN_4;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  __disable_irq();
  while (1)
  {
  }
  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

Но я в нём ничего не понимаю, хотелось бы попроще.

 , ,

vbr
()

Как дать исходящий доступ в сеть только конкретному приложению? Например, браузеру.

Форум — Desktop

Всем привет.

Миграция с офтопика на Debian11 LXQT проходит не так гладко как хотелось бы. Фаервол в винде сделан так, что я могу запретить там вообще все соединения. И входящие, и исходящие. А потом разрешить сетевую активность только для конкретных приложений. Например, для браузера или cli. И винда сама будет решать каким протоколам/портам/адресам давать исходящий доступ в сеть.

А на онтопике я до сих пор не поняла, как такое повторить. Запретила все соединения через nftables.conf для обеих chain-ов input и ouput:

type filter hook input priority 0; policy drop;
type filter hook output priority 0; policy drop;

Это сработало и трафик в обе стороны запрещён. После этого я пыталась найти какие то rules, чтобы разрешить трафик не на портах или IP адресах, а конкретному приложению: Firefox. И не нашла.

В качестве workaround поставила OpenSnitch. При запуске Firefox я разрешаю OpenSnitch-у пускать трафик от/к firefox. OpenSnitch отображает это временное правило у себя в GUI. Но Firefox доступа в сеть не имеет.

Я думала, что OpenSnitch сам на лету пропишет нужные rules в nftables. Но, очевидно, этого не происходит.

В итоге я не понимаю, можно ли вообще повторить в Debian то, что я делала в винде за пару кликов. И если, можно, то как? Памагите, плиз.

 , , ,

Shelly
()