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

    @rPman
    Размер и архитектура сети плюс размер обучающей выборки.

    Не всегда количество ядер GPU оказываются решающими, большее влияние имеет размер и скорость GPU RAM.

    Первая метрика, точнее граница, ниже которой скорость обучения максимальная - объем весов сети плюс обучающая выборка должны вмещаться в оперативную память GPU.

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

    Следующая граница - обучающая выборка не влезает в GPU но вмещается в RAM, сама же нейронная сеть влезает в GPU, т.е. вычисление самой сети все еще быстрое а значит единственное ограничение - узкое горлышко между RAM и GPU.

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

    Ну и дальше, вариант когда сеть не влезает в GPU лучше не рассматривать, так как тогда скорее всего задача будет решаться только огромными деньгами.

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

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

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

    @rPman
    Если без редактирования приложения - подключи к планшетнику/смартфону аппаратную клавиатуру (переходник miniusb - usb стоит порядка 150р плюс в том же фикспрайсе за 99р купи usb расширенную цифровую клавиатуру, тебе же пользоваться ей не надо), android увидит ее и сделает ее по умолчанию при активации поля ввода, т.е. не будет выскакивать экранная.

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

    @rPman
    в меню загрузки grub (если машина перезагружзалась по reset то меню при следующем включении появится, ну или нажать esc в первую секунду загрузки) выбрать режим восстановления, ввести пароль root (надеюсь его делали, именно для пользователя root иначе придется грузиться livecd и в chroot и прописывать пароль, хотя в этом режиме можно и без resque все сделать), затем ввести команду:
    journalctl -xf
    выдаст лог ошибок системы, стрелками просмотр, изучай, что не срабатывает

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

    Если черный экран все равно появляется в нужный момент, можно отключить лого совсем, для этого в меню загрузки grub нужно нажать 'e' и отредактировать текстовый конфиг файл выбранного пункта меню загрузки, убрав quiet splash везде где найдешь (это строка настроек ядра linux /boot/vmlinuz....) и запуститься с отредактированными настройками f10 тогда лог будет в текстовом режиме (помогает если проблема с драйверами видеокарты или с ней самой)

    в общем пока не диагностируешь проблему, решить ее не сможешь.

    p.s. данные легко копируются загрузившись с livecd, в подавляющем большинстве случаев хватает копии /home (бакап все равно весь сделай) который можно развернуть на новую установку (само собой пакеты доустанавливать вручную, так же конфигурации машины понадобятся, но их можно копировать из бакапа), и все будет работать
    Ответ написан
    2 комментария
  • Как запустить ASP.NET Core приложение без сервера?

    @rPman
    Да, на машине устанавливаешь (с поддержкой asp.net встроено в windows начиная кажется с 7, хотя возможно домашняя версия ОС потребует рукошевелений, но pro или ultimate точно есть) IIS

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

    Сертификат https так же можно установить.

    инструкции

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

    @rPman
    гуглить учись
    android enable notification light led

    первый же результат говорит о программе light manager
    Ответ написан
    Комментировать
  • Как отправлять письма по email через c++?

    @rPman
    google: c++ lib email
    откроет мир готовых библиотек по работе с почтой, выбирай на любой вкус и твою среду и компилятор.

    c++ такой язык что программы на нем достаточно многословные получаются

    p.s. первый же результат из гугла https://github.com/karastojko/mailio

    message msg;
    msg.from(mail_address("mailio library", "mailio@gmail.com"));
    msg.add_recipient(mail_address("mailio library", "mailio@gmail.com"));
    msg.subject("smtps simple message");
    msg.content("Hello, World!");
    
    smtps conn("smtp.gmail.com", 587);
    conn.authenticate("mailio@gmail.com", "mailiopass", smtps::auth_method_t::START_TLS);
    conn.submit(msg);
    это многословно?
    Ответ написан
    Комментировать
  • Как синхронизировать базы данных Test и Production?

    @rPman
    Правильно - исключить 'ручную' работу в процессе переноса релизных изменений в продакшен базу.
    Т.е. задача разработчика делать скрипты, которые будут приводить базу данных предыдущей версии к следующей, при этом это не только обновление структуры (это кстати можно сделать автоматически, сравнив базы разных версий, гуглить ddl diff, к примеру для postgres это pgadmin shema diff) но и данные, например наполнение новых полей данными или к примеру в старой версии поле было текстовое в 'свободном формате', а в новой на его основе целая структура (вырожденный пример - был адрес текстовой строкой а стал чуть ли не целым ФИАС).

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

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

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

    @rPman
    если идти строго по поставленной в вопросе задачи, то можно взять список ключей объекта, взять нужный по номеру и использовать
    $items[$key][array_keys($items[$key])[1]]
    но так делать однозначно не нужно, никто не гарантирует что порядок элементов в массиве ключей останется прежним, придется все перепроверять.
    Ответ написан
    Комментировать
  • Где взять голый linux?

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

    p.s. если что графическая оболочка есть и у gentoo, по желанию, есть даже вариант с прекомпилированными бинарниками, все как вы любите - готовое на блюдечке но настроенное кем то другим.

    Самые подробные инструкции, а главное, проходя по процессу установки, начинаешь понимать как именно внутри все устроено, что очень важно для обучения. Огромное и дружелюбное сообщество, да и многие инструкции от arch подойдут, а так как при работе с gentoo появляется правильное видение концепций linux, инструкции из других linux типа ubuntu так же помогают, хотя начинаешь понимать ущербность большинства из них.

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

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

    Но и сил на это уйдет столько, что начнешь понимать, почему в мире именно этим процессом занимаются целые компании, так как в конечном счете с gentoo мейнтейнером ос становишься лично ты.
    Ответ написан
    3 комментария
  • Как устранить черный экран?

    @rPman
    панель управления - программы и компоненты
    удаляй там
    Ответ написан
    Комментировать
  • Почему не прожимаются кнопки q, f,z?

    @rPman
    Не скажу про vnc но всякие anydesk/teamviewer, которые под капотом тот же vnc но переработанный, могут странно работать если на удаленной машине и у клиента на текущий момент стоят разные раскладки клавиатуры, и еще более странно все это работает, если на удаленной машине в принципе нет текущей раскладки (не установлен соответствующий язык)
    Ответ написан
  • Возможно ли подключиться к нескольким wi-fi сетям одновременно через одну беспроводную сетевую карту?

    @rPman
    у wifi карты есть два основных режима работы managed и adhoc, первый - классический способ, подключение к роутеру, второй - подключение к таким же wifi-картам, стандарт сильно старее, максимальная скорость сильно ниже, но именно во втором режиме возможно одновременно несколько подключений.

    точно читал что некоторые карты можно использовать в режиме managed несколько подключений к сети с одним и тем же ssid, в любом случае итоговая скорость не сложится, режим работы попеременный
    Ответ написан
    Комментировать
  • Почему нет подключения в интернет на win10 без причины?

    @rPman
    Вариантов много.

    Если перезагрузка роутера временно дает интернет, значит проблема маловероятно железная, и скорее всего проблема именно в роутере, но не обязательно

    пальцем в небо - настройки ip адреса на windows 10 - статика, в сети есть еще машина, получающая от роутера ip адрес динамически (в т.ч. смартфон wifi но не важно) эта машина получает тот же адрес что и твоя машина и на обоих пропадает интернет, как раз это может происходить раз в несколько минут (как настроен dhcp)
    Ответ написан
    Комментировать
  • Как пустить трафик с определенных сайтов через IP адрес Кипра?

    @rPman
    Да, свой vps, установленный в датацентре нужной страны, завернуть свой трафик на него с помощью socks/vpn.

    Еще как вариант через мозилу настроить выход через socks и на компах настроить открытие нужных ссылок через мозилу. Трудность в том, что это придется каждому ставить и настраивать ручками (у компании нет контроллера домена и используется 50/50 маки и винда)
    socks самое простое

    Однократно настроить все равно придется, так же понадобится сервер, любой, хоть слабая машина, хоть малинка, которая будет выступать прослойкой (vpn или socks клиент, самый простой штатный клиент ssh с опцией -Dпорт), но можно сделать следующее - написать сценарий автонастройки прокси PAC, сам файл разместить хоть в майкрософтовской шаре хоть на http сервере локальном, при необходимости вручную менять его (это простой текстовый файл - javascript скрипт), подправляя нужные условия.

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

    Поэтому когда нужно выходить с другого ip адреса, то лучше прокси использовать сразу на весь трафик, а для того чтобы на все свои задачи не нагружать прокси, использовать для этого второй браузер (второй профиль но удобнее отдельный пользователь ОС и отдельная установка, так как это позволит запустить два одновременно браузера), так же есть вариант - использовать браузер запущенный на сервере, подключившись удаленно к нему (linux x2go или windows rdp/citrix), тем более там есть инструменты запуска приложений, когда они выглядят визуально как отдельное приложение а не как окно-на всю машину.
    Ответ написан
    Комментировать
  • Как вызвать функцию в зависимости от полученного числа, без использования условных операторов?

    @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. обнови биос
    Ответ написан
    Комментировать