Задать вопрос
  • Как реализовать смену цвета кнопки в разных файлах (c# winforms)?

    @rPman
    Так и говори, как из одной формы обращаться к контролам другой (утт форма - это окно, в твоем вопросе это 'файл' Tema1.cs и t1q1.cs).

    Тебе нужно передать ссылку на форму, в которой что то хочешь изменить на форму, которая хочет изменить. Сделать это можно либо в тот момент, когда вторая форма создается, либо (если экземпляр у формы один) разместить эту ссылку как статичный мембер какого либо класса (пусть и самой формы) в которую конструктор будет иницилизировать эту ссылку, типа так
    public static tema1_form;
    ...
    // конструктор Tema1
    Tema1()
    {
    ...
    Tema1::tema1_form=this;
    ...
    }

    // в другом файле
    Tema1::tema1_form.button1.BackColor=Color.LightBlue;
    формально способов тьма, тебе тут могут еще накидать, а то народ 'почему то' не любит в конкретных задачах такие простые способы.
    Ответ написан
    Комментировать
  • Возможно ли в Ubuntu сделать так, чтобы клик мышки и горячие клавиши срабатывали при поднятии кнопки, а не при нажатии?

    @rPman
    Закину мысли от себя, но это требует дополнительного исследования.

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

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

    Но сложность тут в том что скорее всего тебе нужны комбинации ctrl/shift/alt/... а их приложения могут обрабатывать по своему (причем часто коряво) и придется прятать от приложений и эти клавиши целиком (а значит симулировать и их поведение)
    Ответ написан
    Комментировать
  • Как удаленно включить стационарный пк с андроид устройства?

    @rPman
    Если у тебя нет человека, который сможет физически нажать reset и power on то не советую использовать WOL.

    Правильное решение - аппаратный выключатель, либо самодельный (дешевле - на основе любого копеечного роутера или малинки и реле на кнопку power, советую для твоего удобства сделать отдельное реле для reset) либо покупной (есть готовые розетки с wifi/ethernet или gprs).

    В биосе машины настраиваешь включение машины при появлении питания. Если машина повисла, делаешь долгое выключение (минута +-).
    Придется покурить настройки загрузчика, так как после неправильного выключения что windows что linux предлагают пользовательское действие с клавиатуры.

    На это тоже есть аппаратные решения - ip kvm. Формально, в 99.9% случаев после сбоя достаточно нажать enter и загрузка продолжится, это так же можно автоматизировать через тупое реле и плату от любой сломанной клавиатуры (обычно клавиатура ломается механически но плата живет почти вечно), там нужные контакты определить легко по прозрачной пленке под кнопками.

    Если будешь использовать роутер или ту же ip камеру, а не малинку (ее то как раз без проблем настроить на управление магнитным реле, а на их основе соберет что угодно почти любой даже не знакомый с электроникой пользователь), то ищи те модели, для которых есть открытые прошивки, причем не на словах а чтобы был у кого то опыт в этом чтобы статью почитать и повторить. На всех роутерах можно найти внешние разъемы (они могут быть тупо под корпусом) либо использовать уже имеющиеся внешние устройства, какие-нибудь управляемые подсветка
    Ответ написан
  • Как создать удаленный виртуальный дисплей большого разрешения и работать через RustDesk?

    @rPman
    Использовать xvfb (X virtual frame buffer). Устанавливаешь одноименный пакет, настраиваешь его запуск, используешь. Таких серверов может быть запущено несколько, но rustdesk может этого не ожидать (я сильно не копал но обычно если запустить rustdesk приложение с установленным DESKTOP на нужную тебе сессию, для нее он и запустится)

    p.s. linux + xvfb + rustdesk это худший способ настройки удаленного подключения
    Рекомендую x2go, сервер все сам настроит, а клиенты есть по до все. Работает на порядок эффективнее (плавнее и менее требовательный к сетевому каналу).
    Для игр не подходит.
    Ответ написан
    Комментировать
  • Установка windows 7 рядом с linux?

    @rPman
    Есть два режиме загрузки, старый mbr legacy, который будет работать и с dos разделами (dos тут то самое название операционной системы из 80-90-ых, это чтобы понимать с каким старьем имеешь дело, как минимум там проблемы с дисками больше 2тб) и с gpt и 'новый' - efi, который требует чтобы разделы были типа gpt (если у тебя есть понятие логический раздел - то у тебя dos).

    Если используешь legacy mbr - настоятельно рекомендую сначала установить windows, а затем настроить загрузку grub linux, причем желательно с другого устройства (речь идет только о загрузчике grub, для которого требуется 1 мб места, причем это может быть хоть флешка или карта памяти, и даже cdrom или загрузка по сети pxe), в этом случае никаких проблем и конфликтов не будет. Существует способ установить оба загрузчика на один физический диск (grub умеет запускать windows) но сам windows может по своей прихоти (это было и не раз) тупо удалять загрузчик linux и перенастраивать все на себя.

    Если используется efi - в этом случае раздел efi boot может быть общим как для linux так и для windows, мало того есть возможность настроить efi загрузку прямо средствами биоса, прописав месторасположение ядра и initramfs linux прямо там (т.е. не нужно загрузочную область создавать, но она и так и так нужна для windows). Опять тут рекомендуется сначала настроить windows, а затем вручную прописать с помощью efiboot утилит в linux как грузиться. Обычно штатный установщик с gui это не сделает, хотя я давно не смотрел... Я привык что чтобы не было проблем от windows, лучше посадить ее на отдельное устройство и никак не давать ей ломать что то в linux.

    Чтобы в legacy boot можно было загрузиться с gpt диска, нужно на нем создавать 1мб bios boot раздел (туда будет установлен загрузчик grub), в dos же разделах эта область уже есть по умолчанию в начале диска.
    Минимальные разбиения диска в зависимости от типа загрузки и типа таблицы разделов:
    legacy mbr + dos:
    * обязательно primary windows boot
    * обязательно primary/logical windows
    * не обязательно primary linux boot
    * обязательно primary/logical linux (на самом деле linux можно разместить даже внутри файла в файловой системе windows но это извращение и чуть медленнее)

    legacy mbr + gpt:
    * обязательно biosboot
    * обязательно windows boot
    * не обязательно linux boot
    * обязательно windows
    * обязательно linux

    efi + gpt:
    * обязательно efi boot (он будет общий windows + linux)
    * обязательно windows
    * не обязательно linux boot
    * обязательно linux
    p.s. dos разделы штатными средствами windows так и linux преобразуются в gpt

    Настоятельно рекомендую сделать резервную копию всего диска, не жалейте денег и времени на это, потом себя вспомните хорошим словом.
    Ответ написан
    Комментировать
  • Как реализовать взаимодействие виртуальной ОС с переферией для прошивки?

    @rPman
    Проброс устройств в виртуальную машину бывает разный, в зависимости от вида подключения, самого устройства, действия могут отличаться от 'вставил и работает' (очень и очень редко) до 'работает только если звезда сойдутся и если запускать заранее подготовленный непростой набор команд перед вставкой устройства и после'.

    Причина - нет адекватной поддержки проброса устройств, чаще всего она ограничена либо работает только при опредленных условиях и по разному на разных устройствах (в смысле компьютер), зависит от производителя процессора intel/amd, возможностей материнки и кучи других мелких нюансов (например десктопные материнки чаще всего ограничивают функционал в биосе). С момента активного использованиея EFI биосов, это еще сильнее усложнилось.

    * Итак - проброс всего pci(-e) устройства вместе с контроллерами и соответственно устройствами, через него подключаемыми. Это самый удобный с точки зрения использования способ (потому как после запуска виртуальной машины контроллер уже доступен внутри и чаще всего без дополнительных движений видит устройство 'как родное'.

    В linux мне известно что это поддерживает только qemu/kvm и поддержка требует соответствующие аппаратные возможности (IOMMU/VT-d плюс в принципе аппаратная виртуализация), даже некоторые gpu могут быть так проброшены внутрь виртуалки, производители видеокарт об этом знают и старательно ставят палки в колеса, так как такой функционал они хотят чтобы пользователи использовали только с их 10х дороже серверными вариантами видеокарт). Требует хорошего прогружения в настройки linux, хотя бы чтобы исключить инициализацию устройство самим linux (некоторые устройства не любят включаться два раза подряд без железной перезагрузки).

    * Промежуточный вариант - проброс USB устройств. Это установка в гостевой операционной системе специального драйвера USB который по сети или каким-либо другим способом (например virtualbox usb при установке проприетарного guest additions) транслирует весь трафик, включая управляющий с хост машины для выбранного usb устройства или контроллера. Точно помню отдельные приложения для трансляции usb по сети между машинами даже без виртуализации, но лично сам не пользовался, гуглите решения обычно платные.

    * Проброс 'блочного устройства' (читай дисков или отдельных разделов, и даже файлов), в этом случае гостевая ос не имеет доступа к самому устройству, но только к данным на нем. Формально это просто подключение диска из файла (потому как даже в windows диск и раздел это буквально файл, который можно открыть fopen по специальному имени). Разные системы виртуализации дают разный интерфейс и удобство. qemu с тем же libvirt - удобнее чем к примеру virtualbox (там нужно в консоли специальную 'скрытую' команду использовать)

    p.s. Проброс видеоускорителя - есть еще протоколы spice но на сколько я знаю они не достаточно функциональны
    Ну и проброс всякой мелочовки типа клавиатура, мышь, планшет/сенсорный экран, мониторы. Это все виртуальные сущности, реальное железо тут не пробрасывается.

    p.p.s. драйвера windows для гостевых систем с каждым разом становятся все хуже и хуже, если я верно понял палки в колеса вставляет сама майкрософт, например windows 10 адекватно в virtualbox уже не работает gpu без глюков (я обхожу большинство проблем только с помощью rdp подключения)
    Ответ написан
    Комментировать
  • Как регулировать громкость приложений через пульт?

    @rPman
    Готового решения боюсь не будет, но написать свое под свою задачу будет не сильно сложно.

    Покупаешь вторую клавиатуру (обычно usb, можно купить типа только расширенная цифровая), рисуешь на кнопках стрелки громкости или как то еще помечаешь какая кнопка громкость какого приложения будет менять, затем настраиваешь какого-нибудь демона на прослушивание клавиатуры (гугл говорит про actkbd (пример), но почему то в ubuntu по умолчанию его нет, возможно за эти годы его переименовали или функционал перенесли в другое приложение типа xbindkeys), как минимум в linux встроен функционал отвязывания клавиатуры от сессии (например с помощью loginctl я могу настроить отдельные рабочие места и привязать видеокарта+монитор+клавиатура каждому свое и соответственно просто отвязать дополнительную клавиатуру чтобы ее использовать в другом демоне или даже xhephir - это xserver в окне)

    А там настраиваешь на каждую кнопку вызов команды смены громкости с помощью pulse-audio
    pactl list
    получаешь список всего, работающих со звуком (рекомендую поизучать, можно ограничить вывод, задать формат вывода, в т.ч. json), устройства, источники, получатели,

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

    Дальше просто запускаешь команду
    # изменить громкость
    pactl set-sink-input-volume [sink number] [volume percent]
    # переключить mute
    pactl set-sink-input-mute [sink number] toggle
    # bashcompletion по tab автоматом предлагает sink номера уже работающих приложений, это поможет тебе разобраться что именно из вывода pactl list тебе нужно


    p.s. точно видел инструкции, как сменить код клавиши выбранной клавиатуры, тогда не придется отсоединять клавиатуру от сессии пользователя, она просто станет 'непонятной' для обычных приложений, которые будут игнорировать неизвестные коды, а ты в своем приложении будешь их отлавливать
    Ответ написан
    Комментировать
  • Как правильно распарсить логи с файла Linux?

    @rPman
    в filter укажи multiline, пример вот
    p.s. а читать и искать потом как ты собираешься по этим логам?
    Ответ написан
  • Как выбрать компактный цифровой микроскоп для пайки?

    @rPman
    смартфоны, mid/high-end имеют отличные камеры (а некоторые и оптику), только замоделить крепление к объективу или сразу такой купить

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

    p.s.
    древний xiaomi a2, 8x цифровой зум, никакого микроскопа
    pmxkhu8bgu0x75fub1yy1unxuig.jpeg
    купи объектив 10x с креплением к смартфону и больше ничего не понадобится (только чем то этот смартфон удерживать)
    Ответ написан
    Комментировать
  • Серый фильтр RTX 4060 в играх, как исправить?

    @rPman
    пальцем в небо, но мало ли, когда то это имело смысл

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

    посмотри, возможно ты что то крутил или приехал странный пресет
    Ответ написан
    1 комментарий
  • Где обучить нейросеть?

    @rPman
    vast.ai есть даже оплата криптовалютой
    фишка в том что там можно подобрать десктопные видеокарты с меньшим объемом vram если подходят под твою задачу (400млн float/double это 1.6/3.2GB vram + память под обучающую выборку + сопроводиловка 10%-20%), они дешевле по определению серверных.

    Дешевле, только приобрести видеокарту себе и собрать свой комп (я говорю про ситуацию когда тебе не нужен суперкомпьютер, как только у тебя производительность выходит за рамки нескольких десятков gpu то там возникают другие проблемы)
    Ответ написан
    5 комментариев
  • CDN для загрузки видео, чтобы получить hotlink (для чайников) или хостинг, но какой?

    @rPman
    Если трафик нулевой то стоимость хранения твоих 2 гигабайт в облачных сервисах типа s3 будет считанные баксы в год если не центы (фактически все определит трафик).

    Иначе, арендуешь у реселеров vps-ку за N баксов в год, настраиваешь nginx (хватит дефолта) и выкладываешь свои файлы статикой. у меня впс-ка за 16$ в год с 10гб диска и 100мбит сетевухой уже много лет работает, перезагружалась считанные разы (там скрипты качают терабайтами в месяц данные)

    Гугли lowendstock, это поисковик по таким мегадешевым мегатормозным виртуалкам, советую дешевле 1$ в месяц не выбирать.

    Все остальные варианты сложные, замудренные и без каких либо гарантий.

    p.s. бесплатные сервисы при малейшей нагрузке сразу перестанут быть бесплатными
    Ответ написан
    6 комментариев
  • Как проверить, что программа что-то делает (курсор в ней в виде "часиков")?

    @rPman
    В общем случае не существует способов решить твою задачу.

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

    Курсор мог бы быть решением если одно но - он меняется только пока этот курсор находится строго над окном приложения, причем над его видимой частью, т.е. если приложение свернуть или оно будет загорожено другими окнами, то этого понять будет нельзя.
    Можно написать библиотеку и вешать ее как hook на вызовы winapi SetCursor (для запуска приложения потребуется администраторские права а так же с высокой вероятностью в современных версиях win10-11 это уже будет не так просто сделать, по крайней мере я пользовался одним таким приложением minimize to tray и оно уже не работает), так же это не будет работать с windows store приложениями, а точнее те что написаны на .net и используют среду CLR.

    Поэтому, для каждого приложения придется искать свой детектор их занятости.
    Ответ написан
    Комментировать
  • Как в Libreoffice Writer отключить перенос строк в ячейке таблицы?

    @rPman
    Оформлю как ответ но сразу говорю это извращение.

    Создай таблицу в calc, сохрани, и вставь в документ writer как Врезка (будет вставлен документ как есть с кастрированным интерфейсом).

    Я поковырял, кастомизации в интерфейсе нет (можно убрать только сетку, но нельзя 'названия' колонок и строк), но почти наверняка все можно сделать через макросы, так как это функционал есть в самом calc.
    Ответ написан
    Комментировать
  • С помощью каких инструментов можно запускать локально под Windows большие языковые модели?

    @rPman
    gpt4all это запускалка и менеджер моделей.
    Локально, на машинах без gpu или со слабыми, объем памяти которых недостаточен, используют ggerganov llama.cpp, который уже стал мощным монстром с собственным http api сервером. Используй его напрямую.
    Ответ написан
    Комментировать
  • Где хранится информация и откуда её берет нейросеть для ответа?

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

    Плагин это буквально классическое приложение с api, к которому будет обращаться chatgpt для наполнения данными вконтекст беседы (он тупо вставит возвращенные данные в беседу, но не покажет этого).

    Таким образом chatgpt не только использует свою/свои большие языковые модели как память, но и позволяет использовать внешние источники информации причем максимально свободным образом, так будто там сидит человек и читает все что написано клиентом и разработчиком плагина и делает запросы.

    p.s. напомню, gpt от openai и некоторые другие, могут одинаково хорошо работать как со структурированными данными так и со свободным текстом (ты можешь им json файлы слать, добавив к ним в начало выдержки из документации по их использованию) и попросить в ответ так же давать json, который уже можно будет отправлять 'тупым и устаревшим' приложениям, не умеющим думать но идеально отрабатывающим запросы в бд.
    Ответ написан
    Комментировать
  • Как запустить эмуляцию телефона Андройд?

    @rPman
    Попробуй https://www.android-x86.org/ запустить в эмуляторе на выбор qemu/virtualbox/hyperv (только win)
    Затем установи туда это https://opengapps.org/

    будут траблы с видеоускорением (собственно из-за них и других проблем и появились куча таких проектов типа bluestack и прочие)
    Ответ написан
    Комментировать
  • Где можно найти в свободном доступе медицинские 3Д сканы?

    @rPman
    Данные - новое золото.
    Как вы представляете такое богатство в свободном доступе?

    p.s. учимся гуглить с помощью бинг ;)
    NIH (The Cancer Imaging Archive): Эта база данных содержит обширное количество датасетов, включая сканы грудной клетки с диагнозами, метками и аннотациями, а также данные о легких, мозге, молочных железах, печени и других органах.
    OASIS: Здесь представлены снимки магнитно-резонансной томографии (МРТ) для кросс-секционного изучения.
    Kaggle Data Science Bowl 2017: Этот датасет содержит изображения легких для задачи диагностики рака.
    Stanford Artificial Intelligence in Medicine / Medical Imagenet: Открытые датасеты от Stanford’s Medical Imagenet для медицинских изображений.
    MIMIC: Это открытый датасет радиологических отчетов, основанный на данных о критических пациентах.
    Ответ написан
    Комментировать
  • Как сделать голосовой ввод через микрофон windows 10-11?

    @rPman
    Нет такого, и создание такой поддержки для windows очень не простое. Есть сторонние инструменты, но они еще более ограниченные. Эта область стагнировала годами, надеюсь нейронки трансформер вдохнут в нее жизни.

    Попробуй функционалом от гугл в google docs, чтобы оценить достоинства и недостатки. Так же при использовании google chrome можно включить подобный функционал простым плагином (я не нашел готового но раньше там достаточно было добавить атрибут x-webkit-speech к любому input и в нем появится кнопка голосового ввода, сейчас чуть чуть сложнее, в стандарте у браузера есть соответствующий api)

    p.s. Интересно, сколько народ готов за подобный софт заплатить?
    На основе открытых нейронных сетей типа whisper (там как я понял на код и веса очень удобная MIT) можно запилить вполне автономное приложение, а уж при наличии доступа к облачным api и подавно.

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

    В частных случаях возможно голосовой набор имеет смысл, но тогда зачем городить для этого поддержку ОС.
    Ответ написан
    4 комментария
  • Почему две строки при загрузки linux?

    @rPman
    Это меню grub.
    не помню про centos, но в современных версиях, по умолчанию он не показывается, и будет виден только если предыдущее завершение работы было не корректным.

    Если что, в grub есть настройка, сколько времени показывать это меню по умолчанию и автоматически грузить какой пункт (остановить автозагрузку по нажатию ESC или стрелок)

    В разных версиях grub это настраивалось по разному, гугли именно для своей centos grub timeout
    Ответ написан
    1 комментарий