Задать вопрос
  • Как сохранить значения нескольких переменных в С++ 17?

    @rPman
    я так понимаю человек желает аналог php-шного list
    list($normal_weight, $weight)=getInfo();

    в таких языках как C+ (да и C) идеологически парные переменные объединяют в классы (структуры), с которыми = работает как копирование всей структуры.

    struct NormalWeight {int normal_weight, weight};
    // ...
    NormalWeight nm=getInfo();
    if (nm.weight > nm.normal_weight)
    Ответ написан
  • Как ускорить процесс получения большого объема данных?

    @rPman
    что именно занимает так много времени, проведи профилирование чтобы выяснить где больше всего проводит времени твой код - например внутренняя обработка данных или база данных?
    для 10 000 данных весь процесс занимает около 20-25 мин.
    для такого объема записей это слишком большой срок для базы данных

    Что за анализ выполняется для этих данных что так медленно? почти наверняка это сделано ОЧЕНЬ не эффективно, особенно если вылезает вот это:
    Если стрим записи в БД сделать параллельным (parallelStream()), то появляется проблема при записи в БД, так как некоторые потоки пытаются одновременно обновить одни и те же данные.

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

    Правильно - разделить свою задачу на три - анализ, обработка и сохранение данных. Затем анализ и/или обработку переделать на работу с одновременно большим количеством данных.. в оперативной памяти, а уже потом записать результат.

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

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

    Современные даже десктопные машины с 16-32гб (а серверные с 128-256 легко) оперативной памяти позволяют вообще зхагрузить большую часть данных в оперативную память и обработать ее там эффективнее чем это получится делать через sql прослойку, которая рассчитана не на скорость обработки а на надежность хранения и многопользовательский доступ.
    Ответ написан
    4 комментария
  • Как сделать клон Ubuntu в VirtualBox?

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

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

    Либо можно все сделать вручную без каких либо инструментов из linux, запущенного с отдельного носителя (например установочный liveusb linux), этот вариант требует большего понимания что делать но он может быть проще чем clonezilla (парадокс да) и не требует промежуточного хранилища:
    * Запускаешь на обоих машинах linux (сеть должна быть настроена в виртуалке например - сетевой мост с локальной сетью, тогда ip будет выдавать роутер автоматически).
    * Выбираешь одну из машин как рабочую (например целевая виртуальная), за которой будешь сидеть и ставишь там nbd-client (а на другой nbd-server), на второй (например реальная машина) прописываешь в /etc/nbd-server/config
    [generic]
    allowlist = true
    [sda]
      exportname = /dev/sda
    [sdb]
      exportname = /dev/sdb
    # и так для каждого диска в машине

    * перезапускаешь nbd-server и все
    service nbd-server restart
    * на основной
    sudo modprobe nbd
    sudo nbd-client -name sda ip-адрес-мащины-nbd-server /dev/nbd0
    # и так для каждого диска, поменяв например sdb и /dev/nbd1

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

    * Если размеры дисков одинаковы то можно тупо скопировать их с помощью
    dd if=/dev/nbd0 of=/dev/sda bs=1024k status=progress

    эта команда скопирует с сетевого nbd0 на локальный sda (можно поменять местами как тебе требуется)
    после этого ничего делать не надо будет (исключение efi загрузчик, на сколько я знаю virtualbox только недавно научился его, еще в бете 7 версия, а так смена efi на legacy mbr потребует вручную запустить grub) и все будет работать.

    * Если размеры дисков и разделов разные, но свободного места хватает (например с большего на меньший диск) то можно так же с помощью clonezilla все склонировать, выбрав режим device-to-device

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

    @rPman
    Это называется IP GSM ли SIP GSM Шлюз, на рынке куча вариантов, от полноценной АТС с несколькими линиями и поддержкой старых аналоговых телефонов, так и SIP - GSM шлюзы (как я понимаю то что тебе надо) цены начинаются где то от 6т.р.

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

    p.s. sms отсылать нет проблем, любой модем это умеет

    upd. как я понял можно usb модемы подключить к asterisk и звонить через них
    пример инструкции
    Ответ написан
    1 комментарий
  • Хостинг без ограничения по времени с Python, где найти бесплатно?

    @rPman
    Бесплатно на вечно нигде и никогда.

    У тебя не найдется 1$ в месяц? ок от 3.5$ в год? скрипты можно запускать на не надежных хостингах реселеров наверное третьего уровня на очень слабых vps-ках, но часто скриптам и ботам этого достаточно.

    зы Многие такие хостеры принимают оплату в криптовалюте
    Ответ написан
  • Как в Linux разрешить доступ в интернет только определенным программам?

    @rPman
    app armor и se linux или cgroups, это правильный но сложный вариант, гуглится даже проект соответствующий там в описании ссылки на подробнее информацию

    И да, это сложно.

    Но есть ОЧЕНЬ простое решение - виртуализация/контейнеризация!
    OpenVPN запускаешь внутри виртуальной машины (мышевозекательно libvirt + lxc, не требует ресурсов для работы), внутри этой песочницы поднимаешь ssh сервер (чтобы на его основе работал socks прокси, так как это встроенная фича, нужно на машине где нужен интернет подключиться к ssh серверу с ключом -D1080 и получишь socks proxy с портом 1080) либо какой-нибудь http прокси, и вот браузер запускаешь с настройкой этой прокси, при необходимости хост машину вообще можно от интернета отключить.

    Так же можно и firefox в lxc запустить (сложно настраивать графику, но можно пользоваться графически сервером хост машины, настроив DISPLAY и права доступа xhost)

    Этот способ очень хорошо изолирует приложение и очень прост в настройке, заметно проще чем фаервол
    Ответ написан
    1 комментарий
  • Какую легковесную IDE выбрать для C++?

    @rPman
    докину сверху к ответам
    eclipse плюс cdt

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

    @rPman
    При старте сети (приватной или тестовой), ноде нужно подсунуть genesis.json в котором прописаны все стартовые транзакции и балансы

    Как я понимаю файл собирался на основе ico из bitcoin переводов (как то по особому сделанных)
    гуглится это
    https://github.com/ethereum/ethereumj/blob/develop...

    по уму проверить можно, создав свою сеть на его основе и проверив хеш
    geth --genesis genesis_block.json
    Ответ написан
  • Как у python сохранить дание у файл котрий не сможет открить пользователь?

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

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

    @rPman
    Главный бонус использования 3 варианта - не будет важна поддержка (т.е. ее отсутствие) чисел с переменной фиксированной точностью на бакэнде. Например в php любой драйвер преобразует числа в double со всеми вытекающими от сюда проблемами.

    Недостаток - можно будет попасть на лимиты стандартных целых чисел (для 64-битных систем, например php), например если на tron ты попробуешь так реализовать работу с токеном usdd, то ты обнаружишь что его точность абсурдна - 18 знаков после запятой, и придется использовать соответствующие классы для работы с ним. Если не преобразовать в запросе тип поля в строку, тот же php pdo преобразует слишком большие целые числа в double

    p.s. bitcoin lightning network добавили пару значимых знаков, советую об этом тоже подумать
    Ответ написан
    2 комментария
  • Куда пропадает память на Windows Server 2019?

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

    ms sql server использует, как я понимаю, их для снапшотов
    Ответ написан
    Комментировать
  • Как пользоваться Youtube Premium в России?

    @rPman
    Не пользуйся червисам google напрямую, пользуйся сторонними утилитами. Например для загрузки видео/аудио с youtube пользуйся консольной утилитой yt-dlp (бывший youtube-dl)

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

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

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

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

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

    @rPman
    Создать html файл со ссылками (при необходимости иконки не делать, у тебя ведь 100500 их) и прописать его как домашню страницу file:///Temp/test.html

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

    Недостаток, если нужно красиво а не просто список, то надо чуток понимать css/html
    Ответ написан
    6 комментариев
  • Как распределить IP-адреса в Hyper-V?

    @rPman
    самый тупой вариант, посадить все машины вместе с хостом на одну сеть с помощью сетевых мостов и прописать ip адреса статикой (не секурно, т.е. сеть то общая)

    иначе,.. а как провайдер тебе ip адреса привязывает?

    p.s. по уму насоздавать сетей на хосте, в каждую завести свою машину и раскидывать с помощью штатнго фаервола пакеты
    Ответ написан
    Комментировать
  • Как снизить использование GPU в Unity?

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

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

    @rPman
    убери music. из ссылки, откроется youtube видео с этой аудиокнигой, она читается
    p.s. могу предположить что глюки с youtube.music это отголоски постепенной реализации изоляции РУ сегмента, т.е. этакие персональные санкции гугла по национальному признаку.
    Ответ написан
  • Почему не работает кириллица в ubuntu в названиях файлов?

    @rPman
    За мультиязыковую поддержку файловых систем отвечает ядро linux (опция
    CONFIG_NLS_DEFAULT=utf8 в /boot/config* ), когда то очень давно для решения проблем с кирилицей сюда прописывали koi8 и т.п. (еще есть CONFIG_EXFAT_DEFAULT_IOCHARSET=utf8, полагаю это персональная опция для exfat) и сейчас это дефолтные значения в ubuntu (и нормально их не изменить, т.е. нужно будет вручную пересобирать ядро).

    Для очистки совести выполни в консоли locale -a и проверь, есть ли в выводе ru_RU.utf8, но это отвечает больше за вывод в консоли, терминале и в приложениях в принципе. Поэтому в зависимости от того как именно ты работаешь с файлами, наверное это критично.

    Чтобы добавить русскую локаль, зайди в GUI настройки OS и добавь ее, будет автоматически установлено необходимое ПО и предложен ребут.

    p.s. нужно больше информации, как и куда пишешь файл.
    например что будет если файл создать с помощью консольной утилиты
    touch имя_файла
    Ответ написан
    2 комментария
  • Регистратор/ресселер взял деньги за продление домена а домен не продлил. что делать?

    @rPman
    в суд!

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

    и такие вещи лучше с юристом обсуждать
    Ответ написан
    Комментировать