LINUX.ORG.RU

Статьи «Разработка»

rtfox-browser: форк undetected-chromedriver с прокси-туннелем, заменой прокси на лету и изоляцией воркеров

 , , rtfox-browser, ,

Парсинг сайтов: как мы сделали rtfox-browser — форк undetected-chromedriver с поддержкой SOCKS5, HTTP, HTTPS

⚠️ Статья носит познавательный и развлекательный характер. Автор не призывает к нарушению правил сервисов.

Всем привет! Недавно мы столкнулись с темой парсинга. Начали искать инструменты — BeautifulSoup, Selenium, Playwright, Puppeteer. Сразу скажу: мы не конкуренты этим библиотекам, далее объясним почему.

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

Dark_bear
()

Написание простой SDL-программы на Pascal

 , , , ,

В топике про новое издание учебника программирования от Столярова появился @bloody_enterprise и сказал, что ему сложно было осваивать паскаль по книге «Паскаль для школьников» Д. М. Ушакова.

Среди заданий там было

Задание 5.7. Ввести значение X и, используя график функции, определить значение Y. Требуется заполнить блок-схему алгоритма.

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

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

Xenius
()

DPI для любопытствующих

 , ,

Движок DPI на C: от захвата пакетов до классификации протоколов.

Мне было интересно узнать, какие байты бегают по моей домашней сети. Я не нашёл простого инструмента, который можно было бы собрать за вечер и понять от начала до конца — и пришлось написать свой, на C. Эта статья — рассказ о том, как работает Deep Packet Inspection.

Код проекта: gitflic.ru/wirewalk/tiny-dpi-engine

Эпиграфы к разделам — цитаты из мультика «Шрек». (Не то чтобы я был фанат, но история уж очень подходящая. Если у вас есть идея что использовать в качестве источника цитат для следующей статьи — я открыт к предложениям!).

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

wirewalk
()

Reticulum: Сложными словами о простом

 , reticulum,

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

Reticulum — радиопротокол для mesh-сети, по словам автора — попытка создать альтернативный протокол базового уровня для сетей передачи данных.

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

Leupold_cat
()

Выделяй память как Линус: инструкция

 , ,

Предположим, у нас есть библиотека на Си. А в этой библиотеке - какая-то структура, детали реализации которой мы хотим скрыть и поэтому удалили из публичных заголовочных файлов. Как правильно выделить память под экземпляр этой структуры? Данная статья пытается ответить на этот вопрос.

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

Lrrr
()

Передача параметров в Nix Flake

 flake,

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

Флейк заворачивает в себя уже известные нам деривации. Задача флейков – добавить гибкости и масштабируемости в экосистему, за счёт большей жёсткости и структурированности ее базовых элементов.

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

wolodyjowski
()

Ant: создание среды выполнения JavaScript за один месяц

 , , , ,

Это перевод поста building a javascript runtime in one month от второго января 2026 года.

TLDR: Я создал Ant, небольшую (2 МБ) среду выполнения JavaScript. Полный исходный код, а также тесты и документацию можно найти на моем github.

Когда я начал этот проект в начале ноября, у меня была простая идея: а что, если я смогу создать движок JavaScript, достаточно маленький, чтобы его можно было встроить в программу на C, но достаточно полный, чтобы на нём можно было запускать реальный код? Что-то, что можно было бы распространять, не таская с собой сотни мегабайт V8 или Node. Я уже пробовал это раньше с минимальными копиями Deno, но этого было недостаточно.

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

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

dataman
()

Система управления ротационными печами на программируемом реле ПР103 «ОВЕН» и микрокомпьютере Raspberry Pi

 , , , ротационная печь, хлебопекарные печи

При эксплуатации конвекционных ротационных печей возникла проблема с ремонтом шкафов управления и панелей оператора. Во-первых стоят дорого, во-вторых, после ввода санкций, многие компоненты официально перестали поставляться и стали еще дороже… Поэтому возникла идея собрать свой шкаф управления с панелью оператора. Есть готовое решение от КИП-Сервис - BakeControl https://kipservis.ru/control_box/BakeControl.htm. Уверен, что их решение прекрасно работает. Но использованный контроллер явно не позволяет хранить большое количество данных с прорисовкой режимов работы в виде графиков и возможностью удаленного подключения для редактирования рецептов и режимов печи. А самое главное — нет возможности самим изменить программу для своих специфических задач. Поэтому решил сделать свою систему управления на доступных устройствах, что вдобавок к указанным преимуществам, снимает зависимость от производителя и уменьшает стоимость.

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

victorsemv
()

20 лет в Open Source: личный опыт

 , личный опыт

20 лет в Open Source. Личный опыт использования и участия. Стоит ли овчинка выделки?

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

unDEFER
()

Tcl/Tk. Облачные сервисы

 , cloudtk, , svgwidgets,

С момента начала разработки пэт-проекта svgwidgets меня не покидала мысль выложить примеры его использования в облако.

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

TclTk
()

Обзор новых возможностей редактора Neovim

 2025, , ,

Хорошая новость – Neovim не стоит на месте и развивается. Многие вещи, которые раньше реализовывались громоздкими и тормозными плагинами, становятся встроенными.

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

rtxtxtrx
()

Tcl/tk. GUI на SVG-виджетах. Градиентная заливка и прозрачность. Часть III

 , , , ,

После выхода первой статьи про svg-виджеты для tcl/tk прошло почти полгода. За это время пэт-проект возмужал и продолжает взрослеть. Напомним, что проект svgwidgets, примеры и интерпретаторы tcl/tk с необходимыми пакетами для разработки gui на базе svg-виджетов можно найти на github-е. В проекте svgwidgets на github-е можно найти как версию интерпретатора tclexecomp как для Linux64 (папка tclexexcomp902), собранного из исходников tcl/tk-9.0.2, так и версию интерпретатора на базе tcl/tk-8.6 для платформы Linux64 (папка tclexecomp200). К ранее созданному на github-е подкаталогу examples/CryptoArmPKCS_Test, в котором выложен исходный код криптографической утилиты для работы с электронной подписью cryptoarmpkcs, который предназначен для запуска на платформе Linux64 в среде tcl/tk-9, добавлена аналогичная папка для запуска утилиты cryptoarmpkcs в среде tcl/tk-8.6 на платформе Linux64 (папка examples/CryptoArmPKCS_Test_Tk86). Для запуска этой утилиты ничего дополнительного устанавливать на свой компьютер не требуется. Достаточно выбрать соответствующий интерпретатор из папки tclexecomp200 или tclexexcomp902 и выполнить файл mainguipkcs_svg.tcl из соответствующей папки ~/examples/CryptoArmPKCS_Test, например:

bash-5.2$ tclexecomp902/tclexecomp64_902_Lin64  examples/CryptoArmPKCS_Test/mainguipkcs_svg.tcl

При подготовке этой статьи использовался графический интерпретатор tclexexcomp902, который поддерживает tcl/tk-9. Напомним, что svg-виджеты могут создаваться каждый на отдельном холсте, а затем отображаться с помощью одного из диспетчеров компоновки (pack, grid, place), или могут создаваться все или группа виджетов на одном и том же холсте. При размещении нескольких svg-виджетов на одном холсте диспетчеры компоновки не используются, их размещение на холсте задается опциями –x и –y.

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

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

TclTk
()

Подключение от Linux к приборам по протоколу ModBUS с помощью утилиты mbpoll

 mbpoll, ,

Подключение от Linux к приборам по протоколу ModBUS с помощью утилиты mbpoll

После того, как поделился своим опытом подключения приборов по ModBUS к Linux Подключение от Linux к приборам «ОВЕН» по протоколу ModBUS с помощью утилиты modbus_cli (комментарий), получил очень полезные советы, поэтому решил написать ещё одну статью по этой теме.

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

victorsemv
()

Основы реверс-инжиниринга Android-приложений

 ,

Основы реверс-инжиниринга Android-приложений

Как известно, Android — это тоже Linux, основной особенностью которого является то, что он позволяет устанавливать приложения только на Java/Kotlin в формате apk, запускаемые через свою реализацию JVM — своего рода песочницу. Раз уж это Linux, то и запускать его можно через стандартные средства — LXC-контейнеры, как это делается в том же Waydroid. Главный плюс такого подхода в отличие от реального устройства — полный доступ к файловой системе, что эквивалентно рут-доступу. На реальном устройстве получить рут-права с помощью Magisk несложно, но это приводит к утрате данных вместе с ключом шифрования от sd-карты, хотя их можно и восстановить, если был бекап. Однако большей проблемой является то, что из-за этого перестают запускаться те же банковские приложения…

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

rtxtxtrx
()

Работа с ModBUS-устройствами из браузера

 , ,

Работа с ModBUS-устройствами из браузера

В прошлой статье я описал подключение ModBUS-устройств к Linux. Нынешняя статья – об использовании подключения для вывода данных и управления приборами с удобного пользовательского интерфейса.

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

victorsemv
()

Подключение от Linux к приборам «ОВЕН» по протоколу ModBUS с помощью утилиты modbus_cli

 , modbus-cli, modbus rtu, ,

Решил поделиться своим опытом подключения приборов по ModBUS к Linux, так как сбор всей информации занял продолжительное время.

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

victorsemv
()

Настройка Neovim/Nvim

 , , , ,

Введение

Neovim или просто Nvim — это современный редактор, возникший как замена Vim.

Vim — это текстовый редактор для терминала, уникальный прежде всего наличием различных режимов работы (нормальный, редактирования, выделения, замены, командный), которые позволяют выполнять абсолютно все действия с клавиатуры без использования мыши, что заметно увеличивает скорость работы с текстом. Так же он является программируемым, что, наверное, и является его самым большим плюсом.

Да, вы можете взять VS Code, поставить кучу плагинов чтобы получить необходимый функционал, но сам редактор, плагины настраиваются через JSON, что не позволяет добавить какую-нибудь пользовательскую функцию для сортировки файлов в проводнике или навесить сочетание на вызов функции… Там такое можно сделать через написание расширений, что намного сложнее и трудозатратнее чем в том же виме + в последнем меньше ограничений со стороны APIVS Code нельзя радикально переделать интерфейс, заменить проводник на другой и т.п.).

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

rtxtxtrx
()

X11 robustness: DRI3 без аппаратного ускорения

 , , ,

X11 robustness: DRI3 без аппаратного ускорения

Уже больше 5 лет как использую разные GPU от AMD и сталкиваюсь с разнообразными проблемами, приводящими к его зависанию. К сожалению, в современном линуксовом десктопе, особенно на AMD зависание GPU зачастую не получается обработать прозрачно для софта. В лучшем случае могут попортиться данные, связанные с активными задачами, в худшем - gpu вообще становится неработоспособен до снятия питания (этим грешили некоторые APU на gfx9)

Успешный GPU Reset

Если в случае с неработоспособным GPU другого выхода, кроме как отказ от него нет, дискретные GPU обычно могут успешно пройти сброс.

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

На rdna2 же обычно содержимое vram остаётся целым, однако не всегда. С некоторой вероятностью обнаруживается периодический мусор после сброса, обычно в этом случае попытка использовать работающие с GPU приложениями приведёт к повторному зависанию. В общем, никаких гарантий нет и по хорошему все GPU клиенты должны пересоздать все контексты с нуля

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

mittorn
()

Tcl/tk. GUI на SVG-виджетах. Поддержка SVG-файлов. Часть II

 , , , ,

Прежде чем перейти к рассмотрению svg-файлов, хотелось бы остановиться на самом интерпретаторе tcl/tk. Отвечая на один из вопросов, заданных после публикации первой части, я написал, что рассматриваемый проект успешно работает и на tcl/tk версии 9.0.1.

Мне захотелось, чтобы вместе с публикацией второй части статьи был выложен и дистрибутив графического интерпретатора tclexecomp на базе девятой версии tcl/tk. Однако выпуск версии tclexecomp для tcl/tk-9 задерживается и было решено собрать дистрибутив самостоятельно. Уже имея опыт сборки проекта Bawt для tcl/tk-9.0.1, удалось после нескольких дней работы собрать и дистрибутив tclexecomp с tcl/tk-9.0.1, с включёнными в него пакетами проекта svgwidgets. И всё было замечательно, все тестовые примеры работали. Но тут случайно мною была на клавиатуре нажата клавиша Backspace и произошел крах интерпретатора. После проверки остальных клавиш выяснилось, что аналогичный эффект происходит при нажатии клавиш Left и Right. Сначала я подумал, что это мои косяки, но решил проверить работу этих клавиш на виджетах text, entry и ttk::entry, в которых для редактирования текста используются эти клавиши. И тут выяснялось, что нажатие на эти клавиши приводит к краху интерпретатора wish9.0, т. е. собранная версия графического интерпретатора tclexecomp здесь ни при чём.

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

TclTk
()

Tcl/tk. GUI на SVG-виджетах. Часть I

 , , , ,

Хочу представить свой пет-проект . Создан он в недрах tсl/tk, который, по моему мнению, многие недооценивают. В статье речь пойдет не столько о tcl (хотя все примеры и сам проект написаны именно на нем), а сколько о tk.

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

TclTk
()