Задать вопрос
  • Как сделать цикл с setInterval который запускался и останавливался через каждые 10 секунд?

    @rPman
    Ты вызываешь count, запускающую новый setInterval рекурсивно , сразу как срабатывает тик интервала, т.е. с каждым новым тиком количество интервалов у тебя увеличивается, лимиты ресурсов у браузера заканчиваются и вот ошибка.

    setInterval должен быть запущен однократно.

    Код в примере и задача в вопросе отличаются, что нужно то?
    Если исходить из задачи, нужно создать setTimeout, который через 10 секунд запустит setinterval с 1 секундным шагом, который уже в свою очередь будет вызывать твой принт и только его
    Ответ написан
    1 комментарий
  • Расхождение ip адресов?

    @rPman
    Если исключить ротуер из сети и воткнуть шнурок провайдера сразу к пк то так же все работает, правда тестировал 1 раз.
    Лучше тестируй, сутками
    если подтвердится - то это однозначно докажет что проблема в роутере

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

    @rPman
    Вся перефирия уже давно работает через логические прослойки. Напрямую к контактам наверное только к LPT есть доступ, и то там прослоек дофига, просто для совместимости устройство такое в операционной системе есть (в windows например пиши/читай прямо в lpt0 файл).

    напрямую к контактам data PCI, в теории, там напрямую доступны, спецификации открытые (почти), покупай доступ, читай изучай..

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

    @rPman
    Перезагрузка под нагрузкой - первая причина, перегрев процессора. Поставь какой-нибудь OpenHardwareMonitor включи там логи в файл и смотри что с момент перезагрузки

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

    В догонку, драйвера, вирусы и т.п. проверяй. Надеюсь ты не майнишь фоном?
    Ответ написан
  • Как вывести Tether из кошелька blockchain.com, не имея Ether?

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

    Осторожно, обычная комиссия дефи в эфире - 40$-80$ (перевод примерно 10$, можно дождаться когда падает до 2$), любая покупка подразумевает поход либо к частнику (вопросы доверия, но у тебя только такой вариант разумен) либо к биржам, у которых есть минимальные лимиты вывода и ее большие комиссии за вывод (бинанс легко потребует 17$).

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

    @rPman
    В вопросе сказано 'автоподключение', это значит в коде нет желания писать где то connect или аналогичную ему строку иннициализации.

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

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

    Я пользовался разок определением констант в виде статичных мемберов класса, подключаемых прямо внутри определения класса с помощью include (синтаксически это красивее define и не требует городить громоздкие уникальные имена)

    Так же возможна ситуация, когда вообще нет глобального объекта для работы с базой данных, точнее когда этот объект никто не удерживает кроме 'его самого', а доступ к нему организован через функцию, например:
    function db()
    {
      static $db=false;
      // до появления static у функций можно было хранить и запрашивать объект у самого класса статичным методом
      if(!$db) $db=new Database();
      return $db;
    }
    
    ....
    
    db()->query(...)
    в этом случае подключение к базе будет сделано в момент первого доступа к ней, что иногда даже полезно
    Ответ написан
    Комментировать
  • В чëм смысл стресс-тестов для видеокарт?

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

    Стресс тесты выявят как минимум проблемы с системой питания и охлаждения.

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

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

    Про static и dinamic написано немного тут
    но совершенно непонятно
    Types of SLC Cache

    There are two types of SLC cache: static and dynamic. Whether an SSD uses static or dynamic cache depends on the firmware algorithm.

    Static Cache. As its name implies, the size of the assigned area is fixed. The main advantage is that there is a guaranteed area allocated for SLC cache. This space is disabled only when the rest of the TLC is fully utilized. However, since only a specific area is assigned for SLC cache, such area will sustain more intensive reads and writes, resulting in higher P/E cycles, which could in turn affect the drive’s endurance.
    Dynamic Cache. In contrast, dynamic cache refers to an area that is not fixed. The key advantage is that wear leveling is much more uniform across the entire drive. The disadvantage is that, due to its size flexibility, the cache size is not guaranteed.


    Кеш это значит записи и чтение идут сначала через эту память, и по какому-то внутреннему алгоритму данные в этом кеше перемещаются на диск при записи и для чтения помещаются в кеш или минуют его.

    Простой пример, кеш у тебя 10 гигабайт а ты решил записать 12гб, пусть к примеру запись в кеш 1 гигабайта тебе будет стоить 1 секунду, а запись на флеш в 10 раз медленней, отсюда первые 10 секунд ты будешь записывать на диск первые 10 гигабайт, но как только кеш, работающий буфером записи заполнится, скорость у тебя упадет и следующие 2 гигабайта ты будешь писать еще 20 секунд (диск будет тормозить запись, чтобы дождаться, когда очередной кусок данных из кеша запишется на флеш, освободит место для новых данных и тогда позволит тебе разместить там новые данные, те. тормозить будет не из-за записи новых данных, а из-за старых, кстати не факт, существуют иные, не FIFO стратегии работы с кешем).

    Если же ты пишешь 10 гигабайт при не занятом диске, то кеш моментально заполнится за 10 секунд, т.е. запись будет моментальной. затем, чтобы иметь возможность записать на максимальной скорости новые 10 гигабайт, тебе понадобится ничего не писать секунд 100 (этого времени достаточно в этом примере чтобы полностью сбросить кеш-буфер на флеш). Само собой, если ты подождешь всего 10 секунд, это тебе даст возможность на максимальной скорости записать только 1 гигабайт.

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

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

    @rPman
    Потому что читаешь с помощью .readline() которая по определению ждет символ '\n'
    Хочешь другой символ, используй просто read и сам сканируй буфер на наличие \r и собирай строку

    как вариант, подмени вывод чем-нибудь, используя пайпы, например tr, а чтобы он не буферизировал вывод, добавь stdbuf -o0, обсуждалось тут
    ffmpeg -i input.mov output.webm 2>&1 | stdbuf -o0 tr '\r' '\n'
    Ответ написан
    Комментировать
  • Насколько сложно прикрутить систему оплаты и систему вывода денег, на сайт, имея статус физ лица?

    @rPman
    Вводи выводи криптовалюты.

    Юридически пока еще можно 'выбрать юрисдикцию' где это либо законно либо не затрагивает законодательство по причине ее закостенелости.
    Ответ написан
    Комментировать
  • Как в php определить кодировку строки?

    @rPman
    Кодировку не нужно угадывать
    Ее нужно брать из заголовков (добавь к curl опцию -D имя_файла, куда будут помещены все заголовки запроса)
    Content-Type: text/html; charset=UTF-8

    и что лучше, из тега
    <meta charset="utf-8">

    p.s. чтобы угадать кодировку, пользуйся консольной утилитой enca, очень мощная вещь, угадывает множественные перекодирования, когда создатель накосячил (например открыть cp1251 в far в koi8 кодировке и скопировать через содержимое экрана)
    Ответ написан
    Комментировать
  • Как записать Windows на флешку из-под Linux?

    @rPman
    В режиме UEFI на флешку, отформатрованную FAT32 достаточно скопировать содержимое ISO образа, и все должно работать, так как биос будет искать в корне флешки каталог EFI итам boot...

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

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

    p.s. можно загрузиться в установщик windows, загрузившись сначала в linux grub (ты говоришь проблем с linux нет), нажимаешь C чтобы войти в командный режим grub
    ls (hd0,1)/

    покажет содержимое диска 0 раздела 1, перебирая цифры найди раздел флешки, где развернут установщик windows
    set root=(hd0,1)
    chainloader +1
    boot


    p.p.s. можно первый этап установки, до первой перезагрузки, провести в виртуальной машине, подключив физический диск как диск виртуалки, это 100% работало всегда и позволяет вообще не делать загрузочный диск windows, т.е. хватит iso образа
    Ответ написан
    Комментировать
  • Как быстро развернуть 5гб mysql дамп в Windows?

    @rPman
    Windows конечно медленнее linux работает с диском, но не на порядок же, железо не одинаковое? на linux ssd а на windows hdd?

    Итоговые файлы базы данных какого размера получаются? влезут ли они, если их разместить на ram диске, создав таблеспейсы на нем его перед импортом, потом перенесешь обратно (я помню достаточно давно останавливал базу, переносил каталог с таблеспейсами на рам диск, а на прежнем месте оставлял символическую ссылку, потом, после тяжелой работы с базой, так же остановив ее, переносил обратно)
    Ответ написан
  • Как тестировать API, если состояние приложения меняется?

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

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

    @rPman
    Полноценную среду управления системами виртуализации продает RedHat, делая ее как раз на основе kvm.

    Что именно из vsan тебе нужно? сетевые хранилища на основе ISCSI можно реализовать с помощью istgt, простой и быстрый как валенок, снапшоты с помощью lvm или лучше btrfs, кстати сами снапшоты есть у kvm/qemu при использовании его формата qcow...
    Ответ написан
    2 комментария
  • Заполнение и отправка формы в точно указанное время, можно ли?

    @rPman
    Скрипт будет зависеть от верстки сайта, и будут меняться при ее изменении. Браузеры имеют вместе с консолью разработчика отличный инспектор, если нажать правую кнопку мыши на желаемом элементе на форме (если возможность заблокирована, то нужно жать shift+правая кнопка мыши) и выбрать Inspect/Посмотреть код, а затем уже в открывшемся инспекторе выделить нужный элемент (input например) и в меню выбрать Copy -> CSS selector, то полученную строку можно напрямую скормить $('строка css selector') и получить нужный элемент, у которого можно править .value=xxx или нажимать .click(). Могут возникнуть сложности с кастомными select или там где форма отслеживает нажатия на клавиатуре,..

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

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

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

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

    @rPman
    В си решение будет зависеть от выбора платформы, под которую разрабатываешь, для win32 gui вполне возможно что тебе хватит отлавливать закрытие окна на событии WM_CLOSE в твоем главном цикле обработки событий окна, а для posix это регистрация колбек с помощью signal на тип события SIGTERM (там можно и на другие события повеситься, даже к примеру на принудительное завершение ядром процесса по исчерпанию лимита оперативной памяти)...

    Первая же ссылка в гугле по запросу: c++ exit current process callback, направление поиска указано в вопросе. Не все виды завершения работы процесса могут быть отловлены самим процессом, в частности у вопрошающего проблема с консольным приложением в windows... возможно если порыть msdn можно будет найти еще какое решение.
    Ответ написан
  • Конвертация криптовалютой, как реализовать?

    @rPman
    Все на так просто как кажется!

    Первое, так как экономика у нас в мире все еще фиатная, то платежи в криптовалюте должны восприниматься просто как еще одна платежная система.

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

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

    Поэтому - выбираешь биржу/банк, где у тебя будут храниться твои фиатные резервы, соответственно брать котировки нужно именно у этой биржи (а везде они разные). Брать нужно не тикер, а стакан depth (список bid/ask лимитных ордеров клиентов биржи) и из него вычислять, в зависимости от объема сделки! по какой цене исполнятся ордера на покупку вашей криптовалюты (bids), минус комиссия за сделку, получишь нужную цену. Это сделки - по маркету. Повторяю - в зависимости от объема сделки, стоимость криптовалюты - разная, чем выше объем тем больше спред между купи продай. Ты можешь разработать торговый алгоритм, который, изучая текущее поведение рынка, совершать сделки покупки и продажи не по маркету (так как сделки по маркету при крупных сделках - заметно дороже, да и при мелких по факту удваивает/утраивает комиссию совершения сделок) но создание надежного такого алгоритма уже вопрос на миллион (и если ты такой создашь, то ты уже сможешь зарабатывать как трейдер, извлекая доход из спреда и волатильности, зачем тебе тогда магазин?).

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

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

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

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

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

    @rPman
    Странное требование, планировщик задач идеален для подобных зада, даже позволяет выводить окно интерактивно (в настройках есть чекбоксик).

    Считаешь, через сколько времени в секундах будет требуемое тебе время (например через два часа - 3600*2=7200 наступит требуемое время, затем запуск раз в сутки - 3600*24=86400), и пишешь следующий cmd файл:
    ping localhost -n 7200 > nul
    :loop
    taskkill /f /im myprog.exe
    ping localhost -n 86400 > nul
    goto :loop

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

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

    p.s. Напоминаю, во всех windows, начиная с win7, в поставке идет компилятор (поставка .net framework) c#, .net js или .net visualbasic, можно писать полноценные приложения, без среды разработки, в любимом в редакторе, компилировать их (включая GUI и работу с базами данных) в командной строке, даже при должном старании можно собрать проект, созданный в visual studio.
    Лежит тут - C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\ (смотри там разные версии), к сожалению майкрософт перестала поставлять новые версии компилятора (5.0 и выше) с ОС, т.е. их нужно устанавливать самостоятельно (бесплатно, но это сводит на нет весь смысл - встроено по умолчанию), похоже майкрософт сделала ставку на powershell (мое мнение - неудобный но уж точно лучше cmd).

    Если что то надо, удобнее писать на этих замечательных языках программирования, а не на генераторе гемороя bat/cmd, который тянут для совместимости еще со времен DOS-а
    Ответ написан
    Комментировать
  • Какое есть API для получения курсов валют и криптовалют?

    @rPman
    А какой тебе нужен?

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

    Так же есть официальные курсы, публикуемые центробанками государств (для рубля смотри cbr.ru), которые практически никак не коррелируют с тем что творится на биржах, но косвенно они друг на друга влияют и являются статичным числом, назначаемым на сутки.

    Цена последней сделки (ticks) никаким боком не гарантирует что следующая сделка будет исполнена по этой же цене.

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

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

    Все это потому, что существует понятие ликвидности торгов. Она не бесконечная (есть оговорки, смотрим к примеру dex на эфире - Synthetix).

    p.s. если тебе считать по какой цене конвертировать свои активы если твой клиент сделку совершает, не забывай про комиссии
    Ответ написан
    1 комментарий