Задать вопрос
  • Как вызвать функцию в зависимости от полученного числа, без использования условных операторов?

    @rPman
    Решение тебе уже сказали - определить функции в массив/map каждую соответственно значению и вызывать.

    Альтернативы не будет. Имя функции не попадает по стандарту в итоговый бинарник, это временная сущность, а значит по имени (сформировав ее к примеру 'func'+n) вызвать никак не получится, но есть исключения, например если требуемые функции - экспортируемые (для dll например), соответственно в зависимости от целевой ОС использовать win32 GetModuleHandle/GetProcAddress, для linux гугл подсказывает dlopen/dlsym.

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

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

    @rPman
    На схеме нижний роутер имеет статический ip в internet и он в нужной локальной сети с машиной Ubuntu, и у нее статический ip, лучше не придумаешь.

    На этом роутере настраиваешь проброс портов (это называется обычно виртуальный частный сервер) когда подключения из интернета по указанному порту пробрасываются до машины в локальной сети роутера на указанный порт, типа router:1021 -> ubuntu:21

    Так как виртуальная машина с ubuntu в верхней сети через двойной nat (сначала роутера virtualbox затем сам роутер) выходит в интернет, то простым ssh подключаешься к второму роутеру по указанному в пробросе порту.
    Ответ написан
  • Unit test. php.ini не хватает память?

    @rPman
    Проверь, может в самом коде php стоят команды типа ini_set('memory_limit', '128M');
    Ответ написан
    Комментировать
  • Почему разрешение в играх через Bootcamp меняется на 4к?

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

    Еще настройки машстабирования нештатного разрешения может быть в видеокарте, ищи что то типа virtual resolution и gpu scaling

    Так как речь идет о windows, смотри
    Ответ написан
    1 комментарий
  • Как клонировать систему со всеми пользователями и настройками на меньший по объёму диск?

    @rPman
    clonezilla в текстовом интерфейсе позволяет сделать желаемое, причем не только с linux но и с windows.
    Если что оно использует штатную утилиту partclone. Разделы подготовь сам с помощью fdisk/gparted/kde partitionmanager

    Так же нужно заново поставить/обновить grub чтобы он прописал загрузчик для legacy режима или меню efi
    grub-install /dev/sda --root-directory=/mnt
    где sda - новый диск а /mnt - куда смонтирована новая копия корня системы (там должен быть смонтирован новый /boot и /boot/EFI).
    Ответ написан
    Комментировать
  • Если перезагружать систему, то дальше иконки asus не уходит?

    @rPman
    После чего появилось такое поведение - ответ на этот вопрос с высокой вероятностью поможет понять причину. Может менял что то в настройках (например поменял схему электропитания). Что делал в последнее время? Какие программы ставил, какие устройства менял в системе и т.п?

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

    С высокой вероятностью происходит следующее - неправильно работающее устройство (либо кривые/отсутствующие драйвера к нему) в windows переводят его в неправильный режим (подача на него питания, чтобы удостовериться, отключи acpi в биосе, или смени настройки на другой режим, поперебирай), а значит 'мягкая перезагрузка' не может сбросить его и подвисает.

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

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

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

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

    Так что исходя из задачи выбирай.
    Ответ написан
    Комментировать
  • Почему не скачивается сайт через wget?

    @rPman
    Потому что он построен на скриптах, контент динамический а wget умеет только со статикой работать

    скачать динамический сайт в общем случае можно только специализированным софтом (к сожалению старые телепорт или offline explorer уже не катят) либо подстроиться под конкретную реализацию и написать приложение с помощью автоматизации работы браузера (silenium например)

    почитай еще ответы
    Ответ написан
    Комментировать
  • Есть ли возможность ускорить соединение если подключиться к провайдеру несколько раз?

    @rPman
    Да, но не все просто!

    С кучей оговорок у вас есть шанс получить в итоге ускорение к примеру по загрузке torrent (подтверждено практикой, два 100мбит провайдера в квартире в сумме давали почти на каждой закачке до 20мбайт/сек).

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

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

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

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

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

    @rPman
    Записал на флешку манджаро, сел устанавливать, а он не видит жесткий диск ноута.
    запускать установщик/сам линукс в режиме efi или отключить secure boot или еще что то вокруг этого
    Ответ написан
    Комментировать
  • Матрица в матрице?

    @rPman
    В c++ есть запись математически схожая с доступом к элементам матрице в математике запись:
    m[x][y] - т.е. мы берем элемент xy матрицы m (формально наоборот конечно, сначала строки Y потом колонки X но в конечном счете разницы никакой, кроме как если важна оптимизация).

    В реальности же эта запись означает что мы берем x-ый массив в списке m и у полученного массива берем y-ый элемент, т.е. m имеет тип массив массивов элементов, и для работы с ним его нужно инициализировать, создав нужное количество массивов одинаковой размерности.

    p.s. иногда, когда хочется 'простоты' инициализации, уменьшения фрагментации памяти, более эффективный доступ последовательный к элементам, можно хранить массив в виде одномерного массива всех элементов матрицы, а доступ к элементам получать, вычисляя смещение в этом массиве как x+y*N, где N - размер матрицы по X, т.е. m[x+y*N], зато когда надо работать последовательно со всеми элементами с лева направо, сверху вниз, можно просто работать по смещению в этом одномерном массиве m[i++]

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

    const int N=3;
    const int M=2;
    int ml[N*M]={1,1,1,2,2,2};
    // матрица:
    // 111
    // 222
    int* m[M];
    for(int i=0;i<M;i++) m[i]=*(ml[i*N]);
    //
    for(int i=0;i<M*N;i++) ml[i]...
    и
    for(int y=0;i<M;i++) 
      for(int x=0;i<N;i++) 
        m[y][x]... // порядок колонки строки тут перевернут, но можно заранее это учитывать и перевернуть везде в коде для удобства восприятия

    p.p.s. может где то ошибся но не принципиально, сто лет не писал на си
    Ответ написан
    Комментировать
  • CentOS сервер выключается полностью. WOL не работает. Сетевуха не горит. Что не так?

    @rPman
    ну если
    Wake-on: g

    то у сетевухи поддержка есть (если сетевая карта не встроенная, убедись что соответствующий проводок от нее подключен к материнке)

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

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

    Если же фронтэнд трогать нельзя, значит бакэнд должен как то идентифицировать дубляж данных. Самое простое (если это позволяет бизнеслогика) - хранить в сессии хеш (точнее список таковых за последние несколько секунд) последнего запроса на изменение данных с фронтэнда и игнорировать те, у которых он повторяется. Почему нужно хранить список, потому при использовании ajax и проблемах с интернет, запрос может заметно подзадержаться, пользователь может перейти на другую страницу (SPA или использование web worker) отправить там запрос и перейти снова к первоначальной, и отправить повторно.
    Ответ написан
    Комментировать
  • Нету драйверов при установке Windows 7?

    @rPman
    Правильно - интегрировать драйвера в установочный iso (программа ntlite, она и обновления может закинуть туда, чтобы слабая машина после установки еще сутками не обновляла систему), способ рабочий но найти драйвера, извлечь их из многоуровневой упаковки последовательно вендором, материнки, вендором ноутбука и т.п. может быть не просто. В почти готовом виде драйвера лежат в драйверпаках. Иногда у производителя тоже правильно лежит на сайте.

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

    Я еще ставил операционку из виртуалки (первый этап до перезагрузки внутри виртулаки, потом вне)
    Ответ написан
    Комментировать
  • К какому специалисту обратиться?

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

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

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

    upd. там помимо windows приложения, есть android apk версия, ее декомпиляция проще
    я натравил на него jbart и вижу что приложение написано на lua или очень активно его использует, их тоже можно декомпилировать (но пропатчить уже не получится), просто поиском указанных api http endpoint не увидел (возможно используется иной или как то не тривиально сокрыто)

    код огромный, под сотню мегабайт декомпилированных исходников, плюс полторы тысячи файлов luac
    Ответ написан
    Комментировать
  • Как настроить ip на virtualbox?

    @rPman
    VirtualBox создает машину практически идентичную настоящей, если сеть в виртуалке настроена как "сетевой мост" с твоей локальной сетью, значит ip адрес выдает роутер (точнее твой dhcp сервер, который обычно идет вместе с роутером) именно он выдает ip адреса машинам в сети, так что настраивать его (ищи что то типа соответствие мак адреса и ip), если nat то настрой сетевой мост (nat - это значит роутером выступает сам virtualbox а там с настройками грустно)

    Еще вариант, в самой виртуальной машине нужно настроить статический ip адрес, ссылка первая попавшаяся, версия ос у тебя может другая, перепроверь, но важно настроить такой ip адрес, чтобы он не попадал в диапазон выдаваемых dhcp сервером сети адресов, так как если они совпадут, у обоих машин не будет сети.
    Ответ написан
    Комментировать
  • Почему ORDER BY DESC в mysql работает не в 100% случаев?

    @rPman
    Перепроверь, что тип поля действительно числовой а не к примеру varchar (хотя если там числа то это не должно что то менять)
    Перепроверь что база данных не повреждена, может просто пересоздать индекс?
    Ответ написан
    Комментировать
  • Как проверить совпадение нескольких переменых?

    @rPman
    $input=[22687, 22687, 22688];
    $res=[];
    foreach($input as $v) @$res[$v]++;
    foreach($res as $v=>$cnt) if($cnt>1) echo $v."\n";

    вместо последней строки вывода можно использовать array_filter, если нужно вернуть массив
    $res2=array_filter($res,fn($cnt)=>$cnt>1);
    Ответ написан
  • Как использовать два и более openvpn клиентов одновременно?

    @rPman
    директива dev должна указывать на tap0 и tap1 в соответствующих конфигах

    и еще, ошибки смотреть надо в логах, /var/log/*openvpn* (на сколько я помню, имя лога соответствует имени файла конфига и/или службы, по которой запускается openvpn)

    p.s. пропиши route для подсетей провайдера vpn чтобы трафик второго не шел через первый открытый vpn
    Ответ написан
    2 комментария
  • Какое оборудование можете посоветовать для создания сетевой инфраструктуры на дачном участке?

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

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