Задать вопрос
  • Работа с огромным количеством файлов?

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

    Последовательное чтение файлов для простого поиска подстроки - очень простая задача, берешь c++, делаешь цикл с fgetstr (если обработка нужна построчная), заранее подготавливаешь искомые строки во всех используемых кодировках как набор байт char* (в идеале в виде констант, т.е. сгенерировав код) просто сравнивая их с помощью strcmp... если таких строк много то подготовь таблицы посимвольного поиска (нагенерировать последовательно вложенные switch case) - этот подход наиболее быстрый из всех возможных, позволяет обрабатывать миллионы строк в секунду

    p.s. если что, gui можно реализовать на одном языке программирования (c# .net) а поиск на c++, запуская из gui приложение, передав нужные параметры в командной строке или специальном файле

    p.p.s. если поиск нужно делать часто, может все же поместить эти файлы в базу данных и создать для искомых данных индексы?
    Ответ написан
    Комментировать
  • Скорость SAS 2.0?

    @rPman
    я читал что для максимальной скорости работы raid0 нужно чтобы количество дисков было степень двойки, проверь.

    Если не создавать рейд, просто одновременное линейное чтение сразу со всех дисков с помощью dd максимальное?

    p.s. raid0 ускоряет только линейное чтение и запись, а вот случайные операции почти не ускоряет
    какую задачу нужно решать с 20-ю дисками в raid0 где нужно гигабайты в секунду, буфер к магнитным касетам?, притом что хранить что-либо на таких дисках очень опасно, ведь шансы смерти всего рейда из-за одного диска складываются (даже лучшие диски это 0.5%..3% смерти), умножаем на 20 и получаем 10%..60%
    Ответ написан
  • Стоит ли отдавать предпочтение Ryzen?

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

    Если компилировать приложения под текущую архитектуру, то все будет зависеть от алгоритмов, кажется у amd с кешем по лучше.... в любом случае речь идет о считанных процентах.

    Т.е. при покупки ориентироваться нужно на тесты производительности (настоятельно рекомендую смотреть только single thread, хотя если нужна числодробилка то да, смотри общие) и стоимость.

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

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

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

    Язык программирования php рекомендует и предлагает для этого конструкцию try catch finaly, там где может произойти ошибка, в catch прописывай логику завершения именно данной секции (откатить транзакцию) и вызывай следующий throw по цепочке, в finaly же прописывай то что нужно исполнить в любом случае.

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

    @rPman
    чтобы передавать сообщения в обе стороны, есть следующие технологии:
    * websocket - client <-> server
    * webrtc - client <-> client напрямую
    Ответ написан
    Комментировать
  • Симуляция купли/продажи блокчейн токенов ERC20 на тестовом сервисе. Как сделать?

    @rPman
    по твоей ссылке bscheck использует honeypot.is, который в свою очередь на этом блокчейне работает только с одним PancakeSwap

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

    Могу предположить, что это чтобы не разбираться с самим контрактом и блокчейном, можно развернуть инфраструктуру обменника локально на своем изолированном сервере, подключить его к своей ноде, и для симуляции отключить ноду от интернета сразу перед созданием транзакции на обмен, в зависимости от того будет ли она создана и по какой цене (можно slippage tolerance по увеличивать чтобы оценить, на сколько пустой пул ликвидности)

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

    @rPman
    wsl2 это обычная виртуальная машина с аппаратной виртуализацией и очень странным кривым маппингом файловой системы на хост (из-за чего возникает куча странностей и проблем) и проблемами с сетью.

    поднять полноценную виртуалку (штатную hiperv или virtualbox) - дело десятка минут (debootstrap или развернуть на ram диске обычную установку), так зачем мучиться и решать чуть ли не специально созданные проблемы от майкрософт?

    мало того, позже, перенести linux из виртуалку на новое железо - это пара телодвижений, когда как из wsl не так просто.
    Ответ написан
    1 комментарий
  • Какие хорошие способы очистки реестра от устаревших записей?

    @rPman
    sysinternals autoruns
    показывает очень много компонент в системе, которые запускаются автоматически по разным условиям (не только безусловный автозапуск) там видно цифровые подписи, по которым можно сразу понять чей модуль, тут же удалить вручную
    Ответ написан
    Комментировать
  • Умеет ли Linux Server устанавливать ПО на Windows?

    @rPman
    В идеале он должен при входе пользователя в домен давать доступ к нужным сетевым папкам, устанавливать драйвера принтеров и устанавливать ПО (MS Office, Chrome, Photoshop, WinRar, KeePass и т.д.).
    Я правильно понимаю, нужна заменаа домен контроллеру windows server? плюс чтобы при логине на машину устанавливалось (проверяло что уже установка была проведена чтобы повторно это не делать?) ПО по списку?

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

    Чтобы реализовать автоматическую установку приложений, необходимо написать небольшой скрипт, который будет проверять что он еще не запускался на данной машине, и запускать по очереди unattended install нужных приложений (указанное ПО да и в 99% случаев любое), нужно использовать .msi или setup.exe запускать с ключами (смотреть инструкции /?) и разместить этот скрипт в автозапуск в профиль пользователей
    пример для msi
    msiexec /i c:\path\to\package.msi /quiet /qn /norestart /log c:\path\to\install.log PROPERTY1=value1 PROPERTY2=value2

    есть проблема, с правами доступа, это не вопрос домена это особенность windows, либо первоначальный логин должен выполнять администратор (имеющий доступ для установки программ на машины) либо администратор должен заранее это настроить (например отключить UAC а после установки пусть он будет включен с помощью powershell)
    Ответ написан
    Комментировать
  • Как правильно заменить create_function?

    @rPman
    Одноразовый код логичнее через eval выполнять

    Задача то какая, неужели без исполнения когда по строке не обойтись?
    Ответ написан
  • Какая само мало требовательная ос кроме Chrome OS?

    @rPman
    в зависимости от задач и возможностей и желания ковыряться.

    Самое компактное что у меня получалось (цели - работа современного браузера и просмотр видео) - на основе linux gentoo и DE - awesome, 50мб ram с gui и кажется даже меньше гигабайта на диске. Но ковыряться, особенно для обновлений, придется не мало (на самом деле не сложно, там все штатно настраивается, даже ядро не ковырял, просто gentoo не простая ос по определению).

    Очень компактную систему можно собрать с помощью debootstrap (на основе debian, например ubuntu), в основном, львиную долю оперативной памяти можно сэкономить тщательным подбором софта и DE, делов на десяток минут, 100-200мб ram после установки (например DE openbox/xfce или даже штатный twm)

    Еще, готовые сборки минимальной ос идут с docker, считанные десятки мегабайт на диске, но работать будут только в пределах его контейнеров
    Ответ написан
    Комментировать
  • Как посмотреть уже удаленные сообщения?

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

    100% никак

    есть мизерный шанс что viber предоставляет такой функционал, но это маловероятно (поищи, есть ли у viber программы по получению всех данных, которые компания о тебе собрала в виде дампа, такой есть у whatsup, там в теории будут и удаленные сообщения)
    Ответ написан
    Комментировать
  • Visual Studio и(или) Rider возможны на 32 бит?

    @rPman
    2019-ая версия поддерживает x86 32бит
    попробуй скачать тут
    Ответ написан
  • Как убрать лаги при просмотре 4К 60fps видео снятого на Go - pro 9?

    @rPman
    4k и 8k при 60fps это экстремальные параметры видео, для этого требуется аппаратная поддержка и специфический софт. Очень мало плееров способны это проиграть на универсальном железе (pc gpu).

    Windows media player это худший плеер на свете, как по функционалу и юзабилити так и по производительности. Я думал на него забили все более чем полностью.

    только один KM-player вытягивает нормально
    ну тогда какие проблемы?
    при установленном k-light codec pack должен установиться еще и media player classic, неужели в нем тоже лагает? всем всегда на windows рекомендую только его это лучший плеер.

    Еще (на linux) наилучшие результаты я получал от ffmpeg (точнее его утилиты ffplay) смотрел 8к видео и больше с разными fps на достаточно слабой машине.

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

    @rPman
    Замоделить/найти готовое/заказать пластиковый крепеж под твои размеры карты и материнки и распечатать на 3d принтере

    Универсальный (но да, не надежный) крепеж может выглядеть как свободно гуляющая прищепка, просто прислоненная лопатками к материнке типа так
    .
            C
            A
          # R #
          # D #
      #####   ######
    M.O.T.H.E.R.B.O.A.R.D
    Ответ написан
    Комментировать
  • Обработка видео на пайтон. Соединить фото в видео. Как сделать?

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

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

    p.s. чтобы реализовать увеличение fps видео, построенное на основе меньшего количества кадров, путем генерации новых изображений из соседних, нужно использовать технологии под названием
    "motion interpolation" или "optical flow", в ffmpeg для этого есть фильтр ​minterpolate
    Ответ написан
    Комментировать
  • Как раз в 15 минут обновлять значения в бд?

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

    Если тебе надо отсчитывать некоторое время с момента события, то нужно в базе хранить начало момента времени с которого начинается отсчет, тогда условие окончания интервала будет now-start_time>длительность_интервала, сделай такое поле finished вычисляемым в view или сразу в твоем запросе.

    Таких полей можно сделать несколько
    Ответ написан
    Комментировать
  • Повышение силы тока с зарядки?

    @rPman
    нет, так не получится, понадобится 'минимальная' схема, которая к примеру через попеременную зарядку пары конденсаторов 'сложит исходные токи'

    Возможно схематически все немного сложнее но этим пользуются, например у меня был примерно такой внешний бокс для hdd, питается от двух usb2.0
    -j8d94zifazzdfzcej5pcdveoiy.png
    Ответ написан
    7 комментариев
  • Как организовать быстрый поиск по 78 млн строк?

    @rPman
    На любом языке программирования, желательно c++, реализуешь следующее приложение, использующее map или аналогичную структуру следующим образом.

    В качестве ключа - хеш от искомого значения
    В качестве значения - список структур, в котоых пара искомое значение (с возможностью выставить null) + возвращаемое значение (идеально может быть смещение в файле csv где начинается нужная строка). Возможно вместо списка использовать еще один map (значение => смещение или даже значение => список смещений, если искомое поле не уникально)
    Map<hash,List<{value,offset}>> или Map<hash,Map<value,List<offset>>>

    Тогда первоначальное наполнение просто считает хеши ключа и заполняет в возвращаемые значение смещение соответствующих строк в csv файле
    Затем вторым проходом, для тех записей где случились коллизии хеша и список возвращаемых значений больше 1, прописать искомое значение либо его хеш (с другим алгоритмом, если не боишься двойных коллизий)

    Затем организуешь поисковый метод который будет принимать поисковые запросы и складывать в очередь (thread safe) ответы (id запроса + смещение строки в csv либо null если не найдено). Метод просто считает хеш искомой строки и берет в map нужный список ответов, если их больше 1 то последовательно сравнивае

    Параллельным потоком либо с асинхронно считываешь csv строки, на основе этой очереди (если диск hdd то лучше сортировать порядок чтения записей из файла по смещению, если записи в csv очень короткие, сотня другая байт, то сортировать имеет смысл и для ssd)

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

    само собой можно считать хеш самому и использовать готовую базу данных но тогда какой смысл в ней если все делать самому.
    Ответ написан
    Комментировать
  • Законны ли самостоятельная установка и использование OEM Windows?

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

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

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

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

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