Задать вопрос
  • Какая топовая оперативная память DDR5?

    @rPman
    Открываешь support ram материнской платы и процессора, смотришь какие наибольшие частоты с нименьшими таймингами пересекаются, та и наилучший вариант.

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

    Зарисуй себе в табличке доступные варианты оперативки с ценами и этим посчитанным числом, отсортируй и выбирай по доступности цены.

    Теперь о главном - вся возня с выбором топовой оперативной памяти разбивается о реалии - на производительность это влияет только для программ интенсивной работы с памятью (у обывателей это только архиваторы и синтетические бенчмарки), в играх прирост считанные проценты (для непонятливых, уменьшение CL в два раза, что буквально должно увеличить скорость ram в два раза, дает 4% fps, цена же на такую память на порядок выше) и то, только если производительности не хватает, если же упирается в возможности видеокарты - прироста от улучшения памяти не будет (смотри график в статье (старая но для понимания пойдет) раздел Тайминги, на примере Serious Sam 3 - игра старая, процессор утилизировать не может)
    Ответ написан
  • Какие таблицы работают эффективнее?

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

    Так как объем ПЗУ значительно выше (при той же стоимости) чем ОЗУ (а требования к ней таковы что индексы желательны влезать в нее, хотя бы для оперативных запросов) то лучше забить на оптимизацию по занимаемому месту данными, чем увеличить кратно требования для оперативного хранения индексов.

    Поэтому - не дроби на большое количество таблиц, пусть будет меньше таблиц с большим количеством полей, но без фанатизма, если видишь что появляется куча условий not null когда как для нескольких таблиц это отрабатывается inner join, то тогда да (not exists лучше чем is null).

    p.s. в догонку про сериализацию данных в одно поле, когда одно поле БД хранит сразу несколько значений - это оправдано и даже рекомендуется, если эти данные не имеют смысл по отдельности, красивый пример ip-адрес и порт как настройки подключения - суть одни данные, и нет никакого смысла разделять их на разные поля базы, за исключением случаев когда возможно потребуется активная аналитика по отдельному полю (например по ip адресу) - 'активная' тут это значит нужно строить индексы и делать частые запросы а не разовый full scan бакэндом.

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

    @rPman
    ntlite
    позволяет вручную указать список обновлений, которые нужно интегрировать в установочный образ (а так же драйвера и кучу настроек таких как тип запуска служб), работает с файлами, скопированными с cdrom/iso, обратно записывать любым соответствующим приложением (можно сделать загрузочную флешку и прямо на ней обновлять, но быстрее скопировать на ssd диск)

    поддерживает кажется даже winxp, но вот возможность загрузить обновления с офф сайта хз (для win7 в этом году еще работало)
    Ответ написан
    3 комментария
  • Что из себя представляет должность администратора баз данных?

    @rPman
    Администратор БД это тот кто следит за работой базы, раздает и управляет правами доступа пользователей, настраивает размещение tablespace, настройка репликации и резеврной копии и т.п.

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

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

    @rPman
    Отключить/удалить индексы, вернуть после полного импорта. Это самое большое ускорение.

    Ещё можно изменить стратегию кеширования данных, дело в том что сервер базы данных слишком щепитильно относится к корректности загружаемых данных, выдавая частый fflush, т.е. принудительную запись данных с ожиданием ее окончания. Это актуально для режима работы с базой но первоначальное наполнение пустой базы можно не боятся сбоев, ведь попытку можно перезапустить с нуля. Например можно изменить режим записи в журнал ext4 на data writeback или лучше средствами виртуализации настроить кеширования диска на -device cache=unsafe для qemu.
    Ещё круче можно настроить bcache с кеширующим диском на ramdisk....

    В общем есть где творчески разгуляться, в итоге можно поднять скорость импорта на порядок, особенно если хватает оперативной памяти
    Ответ написан
    Комментировать
  • Как зашифровать логин и пароль в проекте exe (windows form)?

    @rPman
    Ключевое слово для дальнейшего поиска решения - обфускация.

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

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

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

    @rPman
    То есть из любого процесса можно по идее подцепиться к работающей консоли.
    при наличии администраторских прав в windows можно сделать dll injection

    Нормальным такой способ назвать нельзя, пользоваться этим можно только от безысходности.

    Для коммуникации между процессами в пределах одной машины настоятельно рекомендуется использовать shared memory (и как частный случай - memory mapped files) + semaphores, любые другие способы медленнее или используют их для реализации. Сокеты и named pipes везде почему то сильно медленнее (на порядок или даже два). Вот пример взаимодействия приложений на c++ и php там и бенчмарки

    гуглим: Inter-process communication
    Ответ написан
    Комментировать
  • Популярные блокчейны очень объемные. Как поднимать ноды популярных блокчейнов быстро?

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

    На эфире для этого в протокол запилили поддержку, ключи geth кажется --fast, когда ты соглашаешься доверять готовым дампам

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

    @rPman
    Failed to verify authentication
    ничего не навивает?
    Ответ написан
  • Зависит ли производительность базы данных от количества записей?

    @rPman
    Зависимость требований ресурсов от количества записей (участвующих в индексах) - примерно логарифм log(N) или если индексы не используются то N*log(N)

    Про скорость чтения:

    Пока файлы индексов или не иднексируемые данные кешируются в RAM, с увеличением объема данных скорость работы БД будет падать незначительно (время на получение самих данных будет выше чем их поиск), но как только оперативная память закончится (индексы в кеши не влезают) то скорость работы скачкоорбазно упадет.

    Про скорость записи:
    К сожалению на запись данных в базу данных активно используется диск, соответственно зависимость log(N) сохраняется, но будет с большим коэффициентом от скорости диска на запись.

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

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

    Вот в это же время на хабре была статья (зачем ее автор удалил, найти не могу) тестирования записей в mssql с миллионом как раз с индекосом по хешу, на каждый за несколько секунд - уныло.
    Ответ написан
    Комментировать
  • Как заменить диски в RAID 1 на диски меньшего объема?

    @rPman
    99% проблем у тебя создает аппаратный raid, зачастую функционал там ограничивается вендором.

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

    для linux mdadm:
    - создаешь второй software рейд из одного диска (того что из рейда убрал), указав что второй missing
    mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1

    - переносишь данные со старого degraded рейда на новый тоже degraded
    - удаляешь аппаратный рейд, и добавляешь освободившийся диск к софтварному рейду
    mdadm /dev/md0 -a /dev/sda1

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

    обе системы сделают rebuild автоматически (синхронизацию данных)

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

    многие NAS внутри используют софтварный mdadm за что им спасибо
    Ответ написан
    Комментировать
  • Как узнать процент похожести текста?

    @rPman
    Похожесть - перебором.

    У меня в поиске заголовков статей (40к) postgres подсчет левенштейн со всеми записями был меньше секунды, а ведь он фактически перебор делает. Но задача на самом деле сложнее.

    Посмотри хорошую статья с обзором алгоритмов, статья старая но взяв из нее алгоритмы будет что гуглить дальше

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

    @rPman
    везде одинаково:

    return - выход из функции/метода
    break - выход из switch для выбранных секций case
    goto - выход на метку (только в пределах метода), можно использовать как выход из многоуровневого цикла без определения переменных состояний, но вообще плохой тон
    Ответ написан
    2 комментария
  • Должны ли все асинхронные методы вызываться с ключом async?

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

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

    async/await это синитаксический сахар, позволяющий красиво использовать асинхронный код в обычном стиле программирования. Когда компилятор видит async он сохраняет состояние (стек) и передает выполнение к очереди для других кусков кода (помеченный async)
    Ответ написан
  • Как обновить Win 7 до win 10?

    @rPman
    попробуй последовательно обновиться через 8 версию
    win7 -> win8.1 -> win10

    p.s. совет, делай все без подключения к интернету, сам не пробовал но интуиция подсказывает что так будет надежнее
    Ответ написан
    6 комментариев
  • Где скачать android sdk для aarch64 linux?

    @rPman
    Попробуй установить linux окружение, в гуглплей есть буквально пакеты называются ubuntu или debian root, внутри будет почти голый linux с xserver, можно ставить приложения apt install, внутри ставишь в т.ч. браузер (это будет именно десктопный). Настоятельно рекомендуется клавиатура и мышка.

    Если это не поможет (хотя у гугла должны быть пакеты для arm, правда скорее всего только для mac), то можешь создать себе геморой и установить qemu - эмулятор, запустить эмуляцию x86 машины и внутри ее уже устанавливай x86 linux и android sdk. Не уверен что ты в разумные сроки дождешься хотя бы его запуск.

    p.s. настоятельно рекомендую арендовать в облаке машину с почасовой оплатой (если работать предполагается на 24х7), подключаться к ней по тому же ssh -Y (перенаправление вывода на локальный xserver), даже дорогой селектел позволит арендовать за 5р в сутки за ip + 5р в час + по мелочи на бакапы за минимальную машину.

    В теории можно даже подключиться в режиме отладки по сети (далеко не все прошивки android это позволяют) и запускать приложения на другом или даже этом же смартфоне/планшетнике... занятная матрешка получится.
    Ответ написан
    3 комментария
  • Как лучше всего реализовать хранение "шаблонов" файлов?

    @rPman
    Хранение блобов в файле программы (оно будет мапиться на адресное пространство и читаться эффективнее fread) в .data секции, создать объектные файлы с помощью objcopy или генерировать константы массивов с 0xXX с помощью xdd

    https://caiorss.github.io/C-Cpp-Notes/resources-ex...
    Ответ написан
    Комментировать
  • Как работает PHP, Браузер - PHP?

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

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

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

    @rPman
    Почти все нормальные криптовалюты имеют кошелек с api (часто rpc) по работе с ним.
    Так же для облегчения веса в мегабайтах результата, пользуются (часто неофициальными) библиотеками.
    Для криптовалют с поддержкой контрактов бывают особенности реализации, так же надстройки меняют картину, например lightning network требует отдельный кошелек/демон lnd когда как обычные переводы bitcoin можно делать только офф кошельком.

    гуглить: имя твоей криптовалюты + имя языка программирования + library + опционально название/версия контракта
    Ответ написан
    Комментировать
  • Как настроить автоматический вход по RDP от имени текущего пользователя компьютера включенного в домен?

    @rPman
    Раз у вас все доверяют друг другу, то можно отключить пароль у пользователя в принципе, на сервере пишешь:
    Reg.Exe add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 1 /f

    либо вручную в реестре
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
    "LimitBlankPasswordUse"=dword:00000001
    Ответ написан
    Комментировать