Задать вопрос
  • Как прописать команду сворачивания приложения в трей?

    @rPman
    Есть утилита rbtray, прячет по клику правой кнопкой, исходники примитивные, можно подправить что бы делала она это для всех окон в системе из командной строки
    Ответ написан
  • Как мгновенно выключить питание ATX из Windows?

    @rPman
    Не воспринимай как решение, но как другой взгляд на него.

    Настраиваешь перезагрузку после BSOD (к сожалению не нашел как вызвать выключение), ищешь способ принудительно его вызвать (например с помощью утилиты), настраиваешь загрузчик на запуск какого-нибудь linux, который вернет загрузчик назад и выключит компьютер.. что бы в BIOS долго не задерживалась загрузка, настраиваешь fast startup (я помню на какой то материнке это занимало пару секунд).

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

    не уверен можно ли красиво решить твою задачу, но с помощью ИИ с большим контекстным окном можно скормить ему весь msdn на эту тему и задать тот же вопрос (там есть путаница, так как все это инструкции как управлять устройствами и очень немного про выключение всей машины)
    Ответ написан
    2 комментария
  • Как реализовать механизм доверия между двумя Android приложениями?

    @rPman
    Есть две 'задачи', какая из них вам нужна, не понятно:
    1. передача данных по сети
    * что бы никто не подсмотрел
    * что бы никто не мог скрытно подменить
    это решается ssl шифрованием и удостоверяющими центрами (которым можешь быть ты сам), пример https протокол и инфраструктура вокруг
    2. предоставление гарантий что алгоритм на устройстве пользователя не будет подменен на похожий/прикидывающийся настоящим
    * что бы никто не мог украсть данные
    * что бы никто не мог украсть алгоритмы
    * что бы никто не мог навредить соседним устройствам
    Эта сложнейшая не решена, но в частных случаях есть какие то решения, типа обфускации алгоритма и структур данных для удорожания их понимания и внесения изменений... т.е. вся защита будет строиться на экономической целесообразности процесса, если взлом будет дороже профита от него, этим заниматься не будут.
    Отличный пример - вместо запуска кода на машине пользователя, его можно запустить на защищенной удаленной машине, к которой доступ только по определенным правилам, тупой пример - удаленное управление машиной, на которой запущено требуемое приложение в режиме kiosk-mode, т.е. без интерфейса ОС и возможности выйти за границы этого приложения. Сломать или как то проанализировать приложение в этом случае невозможно, а автоматизация для кражи данных решается лимитами доступа к ним.
    Ответ написан
    Комментировать
  • Как проводится нагрузочное тестирование на проекте?

    @rPman
    Непрерывно! но не тестирование а мониторинг уже имеющейся нагрузки.

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

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

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

    @rPman
    Бесконечные сессии и на браузере возможны, это как разработчик приложения решил, так и сделал.

    В браузере длительность сессии определяется сроком жизни cookies и логикой на сервере (например при проверки наличии сессии вычислять ее длительность из текущего времени и сохраненного в базе времени ее начала).

    Грубо говоря, бесконечная сессия, это если ты ничего не сделал, что бы ее уничтожать.
    Ответ написан
  • Как узнать длину видео в PHP?

    @rPman
    Установить пакет ffmpeg и использовать утилиту ffprobe
    Вот информация о видео в json:
    ffprobe -v quiet -print_format json -show_format example.avi

    или вот конкретно одно поле с длительностью в секундах
    ffprobe -v quiet -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 example.avi


    соответственно на php выполни эту команду, например:
    $duration=`ffprobe -v quiet -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$filename"`';

    и получишь в $duration секунды в float или пусто при ошибке.
    Ответ написан
    1 комментарий
  • Как из https://m.vk.com/captcha.php?sid=183721452994&dif=1 взять капчу в виде byte[]?

    @rPman
    Открыть в браузере и сделать скриншот,.. капча введена и создана что бы защититься от автоматизации, поэтому без браузера скорее всего не обойтись. даже если у тебя получится, через неделю-месяц разработчики переделают алгоритм защиты и твое решение сломается.
    Ответ написан
    Комментировать
  • Какие сейчас лучше выбрать мать с процессором под игрушки, видеокарта будет 4070?

    @rPman
    Открываешь какой-нибудь бенчмарк (цены там врут), на странице single thread performance, выписываешь цены на доступные тебе в магазине варианты, добавляешь колонку с формулой цена/производительность (это будет стоимость каждой единицы производительности), и рисуешь график стоимость и цена/производительность или производительность к цена за производительность... тебе нужны решения с самой низкой стоимости производительности и близкие к твоему бюджету. На графике будет видно выбросы высокой цены того что брать не имеет смысла.

    Будь осторожен с бенчмарками процессоров с энергоэффективными ядрами, ведь те кто тестировали их могли отключить или еще как тюнили машину, исключительно на single thread задачу, ценой multithread, а в реальной эксплуатации эти ядра могут давать выбросы вниз.

    Из дешевых рекомендую какой нибудь AMD Ryzen 5 8500G (18.р.) - холодный, достаточно производительный, мало ядер (играм не надо, да домашнему пользователю и не нужно больше) или Intel Core i5-12600KF (20т.р.) больше ядер, горячее...

    upd. https://pastebin.com/nVi3wfZF из прайса dns на сегодня и бенчмарк
    spoiler
    исключительно из эксперимента код для извлечения данных с вебстраниц и их обработки писал claude sonnet 3.5, главное правильно давать задания и проверять результат, ошибок в коде было минимум
    t6sbyashsfs1h7-wsnaatb1kf-i.png
    Исходя из анализа лучше выбирать эти процессоры (по верхней грани, те что ближе к началу изгиба):
    Процессор Intel Core i3-14100F OEM [LGA 1700, 4 x 3.5 ГГц, L2 - 5 МБ, L3 - 12 МБ, 2 х DDR4, DDR5-4800 МГц, TDP 110 Вт]	10499	3789
    Процессор AMD Ryzen 5 7600 OEM [AM5, 6 x 3.8 ГГц, L2 - 6 МБ, L3 - 32 МБ, 2 х DDR5-5200 МГц, AMD Radeon Graphics, TDP 65 Вт]	20999	4143
    Процессор AMD Ryzen 5 9600X OEM [AM5, 6 x 3.9 ГГц, L2 - 6 МБ, L3 - 32 МБ, 2 х DDR5-5600 МГц, AMD Radeon Graphics, TDP 65 Вт]	31499	4587

    А вот анализ стоимости производительности (bench/price)
    e9kiebz1d9qeihciijmqv9ervjm.png
    тут в районе 20т.р.-30т.р. лучшими оказываются
    Процессор AMD Ryzen 5 8500G OEM [AM5, 2P x 4.1 ГГц, 4E x 3.2 ГГц, L2 - 6 МБ, L3 - 16 МБ, 2 х DDR5-5200 МГц, AMD Radeon 740M, TDP 65 Вт]	18299	3920
    Процессор Intel Core i5-12400T OEM [LGA 1700, 6 x 1.8 ГГц, L2 - 7.5 МБ, L3 - 18 МБ, 2 х DDR4, DDR5-4800 МГц, Intel UHD Graphics 730, TDP 74 Вт]	24299	3515
    Процессор Intel Core i9-11900F OEM [LGA 1200, 8 x 2.5 ГГц, L2 - 4 МБ, L3 - 16 МБ, 2 х DDR4-3200 МГц, TDP 65 Вт]	28999	3402
    Процессор Intel Core i7-12700K OEM [LGA 1700, 8P x 3.6 ГГц, 4E x 2.7 ГГц, L2 - 12 МБ, L3 - 25 МБ, 2 х DDR4, DDR5-4800 МГц, Intel UHD Graphics 770, TDP 190 Вт]	31299	4025

    Ответ написан
    3 комментария
  • Почему ответ на русском языке в терминале VSC не принимается и просто скипается?

    @rPman
    Добавь в switch case секцию default: и выведи на экран что у тебя в age (что бы увидеть невидимые символы типа табуляция, \n и т.п, сериализуй его чем то типа json или если у тебя java 15 версии String.escape() ) либо отладкой проанализируй содержимое после ввода слова с консоли.

    Еще момент, у тебя switch подчеркнут варнингом, скорее всего из-за отсутствия default, но есть еще вариант, на сколько я знаю до кажется 7 версии строки в switch использовать нельзя (в том же c++ это вообще было типа не ошибка, но строки не сравнивались, а использовались указатели на них, соответственно это работало как ожидается только для констант) может оно об этом тебе и говорит?

    upd. в windows, java Scanner нужно принудительно указать в какой кодировке будет поступать ввод, что бы она корректно конвертировала во внутреннее представление, можно это сделать так
    Scanner scanner = new Scanner(System.in, "CP866");
    или при запуске приложения
    java -Dfile.encoding=cp866 Switch
    Ответ написан
  • В чем причина невозможности запустить windows-xp с флэшки?

    @rPman
    Настоятельно рекомендую вместо установки windows xp классическим способом, сделать это на быстрой и удобной машине, в виртуалке, затем перенести установленную систему любым известным способом, например backup/restore (я использую linux и dd либо штатную partclone, умеющие и ntfs, работает быстрее dd).

    Мало того, процесс установки можно прервать на первой перезагрузке (когда установщик копирует себя на диск и устанавливает минимальный загрузчик на диск), собственно сама установка windows и драйвера, происходят уже после первой перезагрузки.
    Ответ написан
    Комментировать
  • Почему остаётся след от спрайта?

    @rPman
    Типовой способ, каждый кадр все видимое поле очищается и ПОЛНОСТЬЮ перерисовывается, что бы не мигало, делают это в виртуальный буфер, который после этого копируется на экран.

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

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

    upd. способ, решающий 'все проблемы', но спрайты рисовать придется самому по пиксельно, не используя системные вызовы (например писать шейдер для gpu) - ты должен перерисовывать попиксельно все поле обновляемого спрайта, вычисляя пикселы о то всех пересекающихся с ним спрайтами (идешь в порядке от самого верхнего, пока не дойдешь до непрозрачного пиксела, если есть альфаканал - то продолжаешь поиск, сохранив информацию о нем), в этом случае тебе никак не придется трогать ничего на экране кроме текущего перерисовываемого спрайта. Если за обновление тебе нужно менять несколько спрайтов, то сначала считаешь карту пикселов, которые нужно обновить на экране, а уже потом для каждого пробегаешь по их пикселам
    Ответ написан
    Комментировать
  • Какое железо подобрать для локального тестирования LLM (ChatGPT На ПК)?

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

    По умолчанию, каждая открытая модель, доступная для локального запуск, поставляются с проектом с исходниками и подробными инструкциями по их запуску, для самых новых и топовых решений это обычно единственный способ. Для этого решения требования к железу самые высокие, а именно, много оперативной памяти gpu, на одной материнской плате. Обычно это по одному байту на вес сети (8бит квантизация) плюс память на размер контекстного окна, размера вопроса и ответа (зависит от модели, от 2гб до десятков), например llama70b будет требовать 70гб+ещё 10гб+-.). Я покупал nvidia 4060ti 16gb vram, у них самая дешёвая память за гигабайт и работает достаточно быстро именно для нейронок (она дешёвая потому что для геймеров тормозная).

    Некоторые (многие, даже топовые, с задержкой в месяц) появляются в llama.cpp или основную на ней ollama, которая очень эффективно работает без видеокарты и даже если оперативной памяти видеокарты чуть чуть не хватает. Я запускал lllama70b на 64гб обычной ram, 5бит квантизация, скорость 1.5токена в секунду... Всякие 8б летают но они глупые.
    Ответ написан
    Комментировать
  • Что стоит делать в 16 лет, если планирую стать специалистом в системном программировании?

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

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

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

    А что бы состряпать решение, которое создаст дополнительный рабочий стол windows, подключит к нему второй монитор, дополнительную клавиатуру и мышку, и сделает на рабочих ревизиях многопользовательский терминал (смотри ibik aster) необходимо разбираться во внутренних особенностях и глюках win32 (в т.ч. что там последовательно наломали майкрософт со времен winnt4 до win11), разработать драйвера прослойки (что бы правильно разделять управлени и доступ к клавиатуре и монитору), да еще что бы это работало на одной видеокарте и не требовало по отдельной на рабочее место... в общем вот ЭТО системное программирование.

    p.s. есть мнение, что что бы работать на таком уровне нужно не просто знания, но и соответствующий склад ума, какая то внутренняя мотивация (многие вещи тупо скучно изучать просто так) и возможность это делать продолжительное время.
    Ответ написан
    Комментировать
  • Почему более 100% загрузка ЦП в Docker на сервере Debian с 1 ГБ оперативной памяти VPS?

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

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

    p.s. постарайтесь высоконагруженные вещи выводить из docker, тем более используется виртуализация, т.е. получается каскадная песочница в песочнице, одна отъедает проценты у производительности процессора, другая - у дисковых операций... попробуйте приобрести максимально дешевый bare metall (есть на основе десктопных процессорах, маломощных, с ценами считанные $10-$20, но разницу поймете сразу)
    Ответ написан
  • Какой нужен сервер для приложения для заказа такси?

    @rPman
    Условная поездка - это считанные десятки запросов к серверу (если правильно websocket или любые другие двухсторонние протоколы), даже очень криворукие разработчики могут реализовать порядка секунды на запрос (обычно сотни-тысячи запросов в секунду на ноду, а очень хорошие разработчики могут обеспечить порядка 10к-100к запросов в секунду на ноду)...

    Техническая сторона почти любого бизнеса это его крохотная часть, в такси важен рынок и немножко маркетинг, отжать в текущих реалиях этот рынок почти нереально, нужно предлагать какие то заоблачные условия, только что бы некоторые водители и клиенты стали этим пользоваться... и делать это достаточно продолжительное время, что бы хотя бы часть рынка себе получить.
    Ответ написан
    1 комментарий
  • Нейросеть или ИИ для создания изображений сайта дизайнов?

    @rPman
    таких не существуют

    есть нейронки текст+изображение -> текст (а тебе нужно текст+изображение -> текст+изображение), но на рабочие задачи там 50 но 50, то не работает, то фигня получается.

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

    @rPman
    К сожалению универсального ответа нет.

    Затраты на создание адекватного детектера генератора ИИ сравнимы с созданием этого ИИ. Но хуже того, как только такой верификатор появится в доступе, на нем сразу начнут обучать ИИ что бы он его обходил, это не сложно, так как обучающая выборка будет крохотной - тысячи.. десятки тысяч статей,.. от этого не защититься.
    Ответ написан
    Комментировать
  • Куда перенести видео с YouTube для просмотра с сайта?

    @rPman
    100 гигабайт в месяц это околонулевая нагрузка, ее потянет любая vps-ка за $3.
    не думал разместить видео в виде ссылки на файл на своей vps-ке?

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

    Отдельного провайдера выбирать для защиты основного сайта от атак ddos методом - 100500 раз загрузить видео файл.

    p.s. бонусом не будет рекламы, можешь считать сам статистику просмотров как тебе удобно а не облачному сервису, самая низкая стоимость по всем критериям, за хранение, за скачивания... из недостатков, архаичные методы защиты от ddos, но никто лучше youtube тебе по умолчанию этого не обеспечит... ну vk конечно сможет
    Ответ написан
    1 комментарий
  • Взаимодействие приложения такси с сервером в реальном времени, какие протоколы и технологии использовать?

    @rPman
    Это как сравнивать тарелку и посудомойку, ну несравнимые вещи, которые могут существовать вместе.

    Наружу выпускать лучше только http, а это значит Websocket или http/3 WebTransport, особенно если подразумевается браузерный клиент (есть еще webrtc но он тут не нужен).

    На сервере обработку очередей ты можешь организовывать как тебе угодно. Можешь и RabbitMq брать, но не вижу особого в этом смысла.

    По твоему ТЗ (оно скорее всего не полно, но маловероятно что будет что то значимое) у тебя нет особой сложности в разработке... особенно если нагрузка предполагается не высокая, которую способен потянуть один сервер, т.е. одно приложение, которое не нужно делить на ноды, реализовывать их добавление или замену на лету от нагрузки и т.п... но даже в этом случае, я точно помню были готовые брокеры, встраиваемые прямо в веб сервер nginx как прослойка между бакэндом и клиентами, бегло погуглил, есть https://nchan.io .
    Ответ написан
    2 комментария
  • Какую версию Windows выбрать?

    @rPman
    для тупо офисных задач

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

    Ну и только если в списке требований стоит какой-то конкретный софт, который не заработает под linux, только тогда смотри в сторону win.
    -----------

    Лично я не советовал бы переходить на win11 и тем более win12 так долго, на сколько позволят требования и возможности. Майкрософт допускает катастрофически странные ошибки до сих пор, нет нужды работать их бесплатным тестировщиком
    --------------

    Для 16gb ram и 512gb диска тебе нет нужды что то выключать и тюнить, ты не заметишь никакой разницы.
    Лучший тюнинг скорости - это отключение антивируса, но не рекомендуется тем кто не понимает что делает и не готов следить за этим самостоятельно.

    Ставь windows 10, все необходимое и 'полезное' в нее добавляется майкрософтом до сих пор (но это последний год когда это будут делать), полагаю еще несколько лет эта система будет поддерживаться большинством разработчиков
    Ответ написан
    Комментировать