Задать вопрос
  • Высокие цены на видеокарты с нами навсегда?

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

    Популярная криптовалюта, которую майнят (а так как ее курс вырос то именно ее можно было бы винить в этом) - это ethereum, уже несколько лет ее разработчики откладывают 'запуск' заранее заложенной в нее механизм прекращения майнинга (бомба сложности) и в 'лучшем' случае растет потребление оперативной памяти gpu, для эфира это уже больше 4гб, игроделы же пока не спешат повышать требования, поэтому на предложение 4Gb видеокарт можно надеяться уже в ближайшее время.

    Вот желающим поиграть с большими нейронными сетями (или иными gpgpu вычислениями) плакать крупными слезами еще долго.
    Ответ написан
    2 комментария
  • Как скомпилировать программу через командную строку используя только возможности виндоус?

    @rPman
    Возможностей windows для этого будет мало. В штатной поставке идет наверное только .net компилятор (это c# или js.net/vb.net где то с win8), т.е. с помощью .net можно сгенерировать текст программы и скомпилировать ее командной строке или кодом, получишь exe но для .net виртуальной машины.
    ------------------------
    Для создания своего языка программирования и интерпретатора есть свои инструменты, и много, для питона например lexer, но вот чтобы сразу и компилятор в нативный код получился, уже сложнее, все в основном не заморачиваются бинарным кодом и переводят в си язык с стараясь следовать posix тогда получившаяся программа будет кросплатформенной (или относительно легко таковой сделать) а уже получившийся код компилируют в бинарник.

    Но если речь в принципе о задаче и не важно как она будет решена, наиболее эффективный способ использовать llvm. И хотя тут так же будет не нативный код а байткод для виртуальной машины llvm, это все равно будет лучше, так как благодаря современным технологиям, виртуальная машина многие места программ оптимизирует в процессе выполнения и они могут работать даже быстрее нативного бинарника (сам в шоке, стремовый парсер json у меня на llvm работает чуть ли не в 2 раза быстрее gcc, который быстрее в 2 раза майкрософтовского)
    p.s. ой тяжко тебе будет с windows, не невозможно а просто сложно, речь о создании и настройки окружения для получения результата... даже кросскомпиляция из linux в windows может оказаться проще, поэтому сразу смотри в сторону cygwin или даже wsl подсистемы
    Ответ написан
  • Как сделать что-то если наступил следующий день/неделя/месяц/год на Python?

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

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

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

    @rPman
    направления решения задачи многопользовательского редактирования:

    - нулевое, самое злобное для клиентов, выдавать ошибку, при попытке сохранить документ, если его редактировали, обновлять форму и предлагать ввести все заново, реализуется полем 'last modified time', которое загружается на форму и отправляется с запросом на обновление, если сервер видит их разными - писать ошибку.

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

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

    - третье, наилучшее в современных реалиях, применять изменения и выводить их в тот же момент как они вносятся на форму, как документы google docs, видно в какой ячейке какой пользователь сейчас поставил курсор, можно даже подсвечивать цветами, с затуханием. Рекомендуется, как ни странно достаточно проста в реализации, если интерфейс client side javascript а не генерация html на сервере.

    Все три способа требуют оперативную информацию о наличии блокировок пользователями, что реализуется с помощью вебсокет
    Ответ написан
    Комментировать
  • Не могу вывести результат получаемый от Google recaptcha v2, как это можно сделать?

    @rPman
    вангую что скрипт обработчика сначала формирует строку ответа а потом выводит заголовки ответа и сформированную строку, соответственно если что-либо вывести перед выводом заголовков, вылетает ошибка

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

    p.s. отладочные логи выводи не в ответ с помощью echo а пиши в файл
    Ответ написан
    Комментировать
  • Какой Линукс пойдет на слабый ноутбук?

    @rPman
    на ноутбуке хочу разместить хостинг мини программы(потребление не менее 3-х % ОЗУ и ядра)
    минимальная конфигурация linux (для deb пакетных менеджеров, это debian/ubuntu/mint/...) можно установить с помощью debootstrap, собственно им пользуется и штатный установщик, но он добавляет 100500 дополнительного софта, а так минимальный конфиг занимает на диске примерно 200мб и в оперативной памяти после загрузки где то десяток другой мб ram

    порядок установки:
    * загружаешься в другой linux (любой, но той же архитектуры что и целевая), можно из виртуалки все делать, если пробросить целевой диск внутрь
    * разбить диск на нужные разделы, если будет использоваться стандартная файловая система ext/btrfs/.. и legacy mbr bios то хватит одного корневого раздела, если есть efi то понадобится еще один раздел fat для efi, если нестандартные файловые системы или конфиг к примеру с raid или шифрованием, то понадобится еще /boot, если используется gpt диск (не mbr) то еще понадобится biosboot раздел на 1мб
    * примонтировать корневой и /boot разделы
    * запустить debootstrap с указанием ос и этого каталога
    * установить grub-install /dev/диск_установки --root-directory=/каталог_с_установкой
    * chroot /каталог_с_установкой
    * настроить пароль для passwd root и /etc/fstab

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

    desktop environment с gui для задач хостинга даже не требуется, если что можно поставить что-нибудь максимально простое awesome, openbox, icewm, eEnlightenment, lxde, xfce,... мало того, по умолчанию с xserver должен ставиться совсем уж минималистичный twm, в оперативной памяти эти вещи будут занимать от силы пару сотен мегабайт (на gentoo я настраивал awesome с последними версиями системы на 50мб ram, на машине с 1гб ram запускал современный браузер)

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

    @rPman
    штатная консольная утилита samba
    smbclient -M MACHINE_NAME < message.txt
    Ответ написан
    Комментировать
  • Как одновременно заполнить 2 столбца разных таблиц одинаковыми данными sqllite3?

    @rPman
    создаешь тригер before insert (и на update тоже) и туда записываешь нужный код, данные будут доступны из 'таблицы' new типа insert into table_b (id,new_val) values (new.id,new.val)
    Ответ написан
  • Как реализовать логику реферальной системы после получения награды в первый раз?

    @rPman
    храни количество использованных рефералов, тех что уже учтены для выдачи награды, тогда условие выборки людей, кому нужно выдать награду будет where ref_cnt-used_ref_cnt>=10
    и выдавать награду либо несколько раз пока не останется рефералов (мало ли кто то разом 1000500 найдет) либо сразу считать нужную награду
    Ответ написан
  • Откуда получать графики криптовалют в виде картинки?

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

    например https://www.binance.com/dapi/v1/continuousKlines?p... вернет json, массив в формате массив массивов, параметр interval задает шаг элемента (1h это часовые котировки например), подробнее формат

    по нему строй график например plotly
    Ответ написан
    1 комментарий
  • Как получить курс валюты на дату указанную в ячейке?

    @rPman
    писали же что googlefinance не поддерживается (хотя некоторые тикеры работают)

    советуют пользоваться YAHOOFINANCE, пощелкай на google sheet formulabuilder там более чем понятно все

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

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

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

    @rPman
    запилить свою на основе autoit, это скриптовый язык с фреймворком и компилятором для автоматизации действий.

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

    если браузер создает системные контролы (inputbox, что маловероятно) то эти элементы можно будет отслеживать и получать их координаты, иначе только распознованием текста с экрана (вплоть буквально до getpixel)
    Ответ написан
    2 комментария
  • Как контролировать двух телеграм ботов одним Python процессом?

    @rPman
    Покопался в исходниках
    в них все что нужно подготовлено для нормальной асинхронщины, но собственно главный метод обработки не вывернут на изнанку, чтобы можно было сделать что то типа:
    bot1 = telebot.AsyncTeleBot(API_TOKEN1, threaded=False)
    bot2 = telebot.AsyncTeleBot(API_TOKEN2, threaded=False)
    ...
    loop = asyncio.get_event_loop()
    loop.create_task(bot1.pooling_step())
    loop.create_task(bot2.pooling_step())
    loop.run_forever()

    смотри код метода _process_polling, и создай свой pooling_step только в нем должно быть только что что в оригинальном внутри цикла while, что то типа
    if updates:
                        self.offset = updates[-1].update_id + 1
                        self._loop_create_task(self.process_new_updates(updates)) # Seperate task for processing updates
                    if interval: await asyncio.sleep(interval)

    непонятно почему создатели библиотеки это не сделали сами, возможно еще не успели или я не правильно понял их код?
    Ответ написан
    Комментировать
  • Как восстановить бэкап с гугл диска для WhatsApp Messenger?

    @rPman
    молодец, есть бакап.
    spoiler
    с одним смартфоном я понадеялся на бакап xiaomi (а так же бакап adb) и оказалось что они не умеют делать копию именно whatsup.

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

    @rPman
    100% готовая библиотека есть, но не нагуглилась, так как задача не такая уж и сложная, ведь все можно сделать заранее.

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

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

    Ищи библиотеки, с эффектом warping/morphing, те что есть работают по ключевым точкам, как раз те что рассчитываешь по центрам квадратом в моем описании выше.
    Ответ написан
    1 комментарий
  • Можно ли ускорить подключение к WI-FI в Linux (Elementary OS)?

    @rPman
    Если я верно понимаю ситуацию, само подключение к сетям со скрытым ssid медленное, причина в скрытности.

    Нет никакого смысла делать ssid скрытым, первая же статья из гугла про это
    Ответ написан
    Комментировать
  • Какими средствами можно реализовать свой vps хостинг?

    @rPman
    Поднять свою инфраструктуру датацентра включая nas, сервера приложений, панели управления и многое другое (один гитхаб у них больше 700 репов) - первый же пример в гугле https://www.openstack.org/ этим пользуются крупные компании для своих нужд, открытое свободное, бесплатное
    p.s. И мне кажется ну очень какое то все это сложное, потому что если исходить от своих частных задач, оказывается что 99% всего предоставленного не нужно, а силы и ресурсы на это тратятся.

    но тебе наверное еще это продавать надо, с панелью управления для конечных пользователей? я как то искал не нашел, точнее есть куча готовых закрытых продуктов, за деньги, за много денег, часто узкоспециализированные (например инструменты по хостингу windows инфраструктуры, с доменами, скайпами, офис 365 и т.п.) всякие Hosting Controller или Virtualizator
    Ответ написан
    Комментировать
  • Где можно найти portable-версию текстового браузера?

    @rPman
    www.kompx.com/ru/konsolnye-prilozhenija-dlja-windo...
    на базе cygwin порта, какраз это portable вариант

    лучше конечно ставить через cygwin.org
    еще лучше, брать нативный elinks из linux, с помощью wsl
    Ответ написан
    Комментировать
  • Как сильно нагрузить интернет сеть?

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

    Еще, есть 2 направления нагрузки в зависимости от выбора можно получить желаемый результат или нет
    1. нагрузка на ширину канала, начинаешь прием и передачу большого объема данных, в правильно настроенных сетях провайдера это может даже не повлиять на работу игр, чей трафик может быть выделен и приоритизирован.
    2. нагрузка на процессор промежуточных машин и его алгоритмы QOS, открываешь большое количество соединений, шлешь данные, маленькими порциями но часто и много, точнее можно даже непрерывно открывать их и закрывать. Самый легкий способ подвесить свой роутер.

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

    p.p.s. на практике, самое простое - запустить загрузку торент файла по больше, в настройках соединений торент указать побольше, 200-300, но некоторые современные провайдеры детектируют такую нагрузку и обнуляют ее
    Ответ написан
    Комментировать