Задать вопрос
  • Конвертация криптовалютой, как реализовать?

    @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 комментарий
  • Как подключится к wifi через терминал?

    @rPman
    Штатный NetworkManager, кажется устанавливается во всех подвидах ubuntu, имеет консольный интерфейс nmcli.
    Первый же гайд по запросу в гугл вот
    Ответ написан
    Комментировать
  • Чем заменить палец на макбук?

    @rPman
    Купить джойстик/руль с педалью

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

    @rPman
    Что значит
    Не лезть же каждый раз в БД, чтобы выдать пользователю информацию о других пользователях в его комнате
    ?

    У тебя websocket, что подразумевает что на клиент передается оперативная информация (изменения) а не полное состояние по таймеру, значит клиент самостоятельно хранит в себе необходимую информацию в коде на javascript в массивах или localstorage, если это так критично
    Ответ написан
  • Возможно ли в websocket'ах до подключения определить кто подключается (любым способом)?

    @rPman
    Разные браузеры - в общем случае считать подключения как от одного человека - нельзя. Так же нельзя считать один ip адрес как один пользователь, так как есть NAT.

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

    Если авторизация не используется, придется собирать отпечаток пользователя альтернативными способами (через параметры браузера, железа, установленные шрифты, и т.п.), гуглить: browser fingerprint
    Ответ написан
    Комментировать
  • Как скопировать числа из кода и вставить в код, но в iframe?

    @rPman
    Если фрейм на том же домене что и создавшее его окно, то получив элемент штатно getElemenById а затем получай его document вот так:
    var frameDocument = myFrame.contentDocument || myFrame.contentWindow.document

    Так же можно получить доступ к фрейму (точнее его winodow) если задать ему атрибут name с помощью:
    window.frames["имя фрейма"]
    и уже от полученного получить document

    Имея доступ к document, можно уже запрашивать любые элементы на странице и править их

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

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

    Полный доступ к содержимому фреймов имеют браузерные плагины, или к примеру твой собственный браузер на базе готовых компонент
    Ответ написан
  • Выход из гибернации на другом железе?

    @rPman
    Такое возможно только при использовании систем виртуализации типа virtualbox/kvm/qemu/vmware (у openvz/lxc/.. кстати миграция поддерживается но требований к железу будет больше), ценой потери примерно 10%+- производительности CPU (в некоторых случаях работа с диском на виртуальной машине будет заметно быстрее), т.е. когда за симулированную прослойку с оборудованием будет отвечать виртуальная машина. При использовании аппаратной виртуализации, смена архитектуры процессора может помешать, с другой стороны, при использовании полной эмуляции процессора, потери производительности будут уже 10-кратными.

    Читай документацию к системам виртуализации по live migration.

    В теории, если обе машины имеют идентичный конфиг, то при большой доле везения должно все сработать, речь идет о материнской плате, процессоре и периферии типа видеокарты. Любая извлекаемая периферия типа мышек, sata дисков и прочего, в теории, не помешает (возможно размещение своп-файла и hibernate на диске, который поменялся, будет фатальным для ос).
    Ответ написан
    Комментировать
  • Как отправить http запрос на https://translate.google.ru на c# без использования api?

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

    Частые запросы переведут ваш ip адрес в режим - введите капчу
    Ответ написан
    Комментировать
  • Как скомпилировать 1 пайтон файл?

    @rPman
    Есть устаревшие компиляторы/трансляторы, и совместимость с библиотеками под вопросом.
    Наиболее близкий к получению именно бинарного кода наверное Nuitka, он транслирует код питон в си, а его уже можно скомпилировать.
    upd. он же и компилирует, только что проверил, прикольно сделали, hello world .exe - 500кб но это именно код а не завернутый архив с питоном
    Ответ написан
    Комментировать
  • База данных для картинок, и чтобы с тегами и поиском по ним?

    @rPman
    Попробуй погуглить: offline image or file gallery tags search

    Вариантов там тьма, я смотрел несколько, правда не для картинок а вообще файлов, попробуй tagspaces.org бесплатный вариант даже юзабелен
    Ответ написан
    1 комментарий
  • Поможет ли суррогатный ключ увеличить скорость вставки в таблицу?

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

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

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

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

    к примеру один из способов (а у вас он прямо напрашивается - маленький пакет данных и временные ряды) - если чтение данных такое же последовательное как и запись (например запросить данные на интервале) то можно при записи упаковывать данные в одну запись, по какому-то временному критерию (например данные за сутки), сериализовав их, само собой текущий интервал данных хранить классическим способом, и по заполнению, переносить.
    Ответ написан
    Комментировать
  • Как заминтить 5-10к nft и не платить gas за каждую?

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

    p.s. имхо, nft - качественно раскрученная клоунада где бредовая идея не имеющая под собой ни логики ни пользы была раскручена (в нее вложено огромное количество денег) чтобы очень крупные владельцы монет на блокчейне могли отмывать (перемешивать) свои монеты и легализовать их вывод
    Ответ написан
    4 комментария
  • Как на дедике запустить virtual box?

    @rPman
    Я запускал, правда очень давно, windows xp на очень слабой vps-ке (openvz) без модуля виртуализации, используя софтварную эмуляцию процессора с помощью qemu (не путать с kvm).

    Будь готов к 10-кратному понижению скорости работы в среднем. Поэтому настоятельно рекомендую сначала настроить образ системы на быстрой машине с поддержкой виртуализации, а потом уже готовый залить его на vps-ку. Обязательно установи драйвера гостевой ос, и включи поддержку virtio в виртуальной машине (я запускал с команндной строки без менеджеров с gui поэтому было все просто).
    Ответ написан
    Комментировать
  • Есть ли возможность "встроить" несколько больших .txt файлов в .exe?

    @rPman
    добавить содержимое файла как переменную в секцию .data на этапе сборки
    https://habr.com/ru/post/545946/

    да придется убрать работу с файлами из кода, ибо лишнее, и такой метод максимально быстрый так как данные доступны сразу при запуске exe, при этом загрузка в память физически произойдет в момент доступа к переменной (в windows exe файл - memory mapped file).
    Ответ написан
    Комментировать
  • Линукс. Это взлом? Тогда как?

    @rPman
    'А был ли мальчик', точно был взлом?

    Вариант 'через плечо' на экран посмотрел не подходит? человек не знакомый, это мог просто прохожий в окно заглянул.

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

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

    Поэтому нужно больше информации, к примеру как ты смотрел этот ролик как пришел к нему? поиском в гугле/ютубе или со стороннего сайта? или в месседженере ссылку кинули?
    Ответ написан
  • Фотографирует и отправляет автономно — приложение на Android?

    @rPman
    ip webcam
    управление по сети (web) весь функционал фото и видео съемки, при настройки может работать с выключенным экраном и даже под фоном (на старых версиях эта фича могла не заработать)
    Ответ написан
    Комментировать
  • Как ускорить выборку ( freeing items, cleaning up) из InnoDB по primary key?

    @rPman
    where id in (...) работает не быстрее?
    ок, залей нужные id в temporary table и делай from table,temp...
    Ответ написан