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

    @rPman
    Важнейшее умение в современном мире, с момента появления интернета, - это умение искать информацию.
    примеры запросов: "vr для обучения" или "виртуальная реальность образование"

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

    все аккуратно записываете в табличку с ценами и приблизительной оценкой объема рынка (например статистики скачиваний стим (скачивания, онлайн, суммарные часы игр и т.п.) и что рисует гугл трендс
    Ответ написан
    3 комментария
  • Как сделать внутриигровую валюту на Unity?

    @rPman
    Миллион способов реализации.

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

    @rPman
    Полагаю вопрос в том как передать сразу несколько данных форм в пределах одного запроса?

    Для этого в стандарте html forms существует возможность передачи списков, в этом случае имена полей должны быть вида "name[]" или "name[xxx]" где xxx это значение ключа соответствующего элемента в массиве (может быть не только число), в массиве на бакэнде значение элемента с именем name буде массивом, где ключ и знаение будут соответствовать xxx и значению, введенному в поле (для пустых скобок будет автоматически использоваться счетчик с 0)
    <form method="post" action="test.php">
    <input name="aaa[]" type="text">
    <input name="bbb[]" type="text"><br>
    <input name="aaa[xxx]" type="text">
    <input name="bbb[xxx]" type="text"><br>
    <input name="aaa[222]" type="text">
    <input name="bbb[222]" type="text">
    <input name="aaa[]" type="text">
    <input name="bbb[]" type="text"><br>
    <input type="submit">
    </form>

    выдаст массив $_POST:
    Array
    (
        [aaa] => Array
            (
                [0] => q
                [xxx] => w
                [222] => e
                [223] => r
            )
    
        [bbb] => Array
            (
                [0] => t
                [xxx] => y
                [222] => u
                [223] => i
            )
    )

    т.е. осталось только правильно сгенерировать нужную форму с правильными именами элементов
    Ответ написан
  • Можно ли массивом сделать замены preg_replace?

    @rPman
    Да конечно, preg_replace принимает как первым аргументом так и вторым - массив, если оба будут массивами, то метод будет использовать строчку замены соответствующую строке условию.

    Еще есть preg_replace_callback и preg_replace_callback_array почитай документацию и примеры, еще более гибкие операции

    p.s. осторожно, utf8 этими функциями работает с оговорками (модификатор /u), есть методы mb_ereg_... но array там уже не поддерживается
    Ответ написан
  • Как правильно подсчитать разницу во времени, SQLite?

    @rPman
    У меня совет, он не абсолютный конечно, но в большинстве случаев экономит время нервы и работает ЗНАЧИТЕЛЬНО эффективнее (меньше тратит процессорное время как бакэнд так и сервера базы данных)

    храните время в виде числа timestamp - количество секунд, по ситуации, в большинстве случаев хватает unixtime, очень редко может потребоваться хранить 64-битный long количества миллисекунд (timestamp*1000).
    Исторические даты (старее 1 января 1970) да, лучше хранить в формате, понимаемом базой данных (если нужно делать сравнение < >, сортировку и другие операции).

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

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

    p.s. у sqlite нет типа date (там как я понимаю строка) но есть функции работы со временем
    https://www.sqlite.org/datatype3.html#date_and_tim...
    https://www.sqlite.org/lang_datefunc.html
    на самом деле там веселее
    sqlite сохраняет данные в том типе, который вы попытаетесь записать, когда вы пишете тип date то это ничего не значит, и если дальше записать строку с датой, запишется строка, если число - будет число, дальнейшая работа зависит от того какую функцию скормишь этим данным
    если проведете бенчмарки, все это великолепие работает отвратительно, и имеет смысл когда в консоли sqlite делаешь анализ, и все эти now, before, 'one day' очень все облегчают, но когда пишешь код, проще работать с понятными секундами, для которых на других языках разработано огромное количество хелперов
    Ответ написан
    1 комментарий
  • Почему скрипт PHP PDO не хочет получать данные из базы?

    @rPman
    Есть ли в базе данные по условию?data = :data AND ref_id = 10215.
    В data хранятся данные в формате?date("d-m-Y");.
    По коду если запрос вернет пустой результат у тебя должна быть ошибка (варнинг в логах веб сервера или консоли где выполняется код), так как $depref1 не определен.
    и т.п.
    Ответ написан
    5 комментариев
  • Можно ли сжать файлы игры оставив игру работспособной?

    @rPman
    В вопросе ошибка, игра 13гб, RAM-диск - 125Гб, явно игра меньше диска и влезет туда раз 9 точно.

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

    Игра долго грузится? не влезает на SSD а HDD тормоз? я когда то давно раскидывал игру на два диска по каталогам, используя символические ссылки NTFS, переносил большие видеофайлы или неиспользуемые карты на HDD а нужные здесь и сейчас оставлял на SSD.

    Эта битва будет долгой, с каждым обновлением игры будет больше гемороя, я боролся с ARK: Survival Evolved, она хотела больше 500Гб, когда диск был 250Гб...

    Настоятельно рекомендую найти деньги и купить большего размера SSD
    Ответ написан
    1 комментарий
  • Как использовать дорк Google для поиска документов?

    @rPman
    Ответ написан
    Комментировать
  • Сравнение сьёмных жестких дисков?

    @rPman
    Различие в том что второго нет в продаже ;)

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

    Это 5Тб 2.5", на грани возможностей современных технологий, а значит диск с черепичной записью, что подтверждают отзывы о замедлении записи со 100мб до 10мб. Если это не является проблемой - то почему нет.

    Современные жесткие диски очень ненадежные, шансы помереть в гарантийный срок или сразу по его окончанию - достаточно высокие (проценты, даже дорогие серверные за 5 лет умирают с шансом 1%, а дешевые десктопные дают все 7%), нужно это помнить.

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

    @rPman
    Итак, все будет упираться в деньги!

    1. выбор железа
    * жесткие диски не надежны!
    Вероятность выхода типового десктопного диска за 5 лет где то примерно от 1% до 7%, и наибольший шанс в первый год. Самые дешевые transcend, доступные на рынке, у меня на практике показывают еще большую статистику (из 7 дисков за 6 лет, два заменил по гарантии в течении 1 года, и еще один под вопросом, он сбоил на уровне udma в логах, но проблемы скорее из-за материнки и/или кабелей)

    * твердотельные диски не подходят для хранения данных, без электричества ячейки теряют заряд и даже в идеальных условиях уже через годы можно получить проблемы (дешевые флешки за 3 года лежания в ящике померли 3 из 4 разных от 8Gb до 64Gb usb3 из midend, разные производители), у ssd есть механизмы против этого но устройство должно быть онлайн постоянно, и еще вопрос, нужно ли принудительно проводить проверку чтения чтобы контроллер заряд обновил или нет (ответ - нужно, но по другой причине ниже).

    * тебе нужен NAS с поддержкой raid (хоть какой то, любой дешевый, задача не ускорить а убрать один из сценариев смерти данных)
    чтобы хоть как то обеспечить надежность, нужно ее повышать количественно, самый простой способ - RAID 1 или 5 и 6 (остальные бессмысленны), выбирая устройства РАЗНЫХ производителей или хотя бы разных моделей, чтобы не получить одновременные проблемы от контроллера (были и такие косяки, диски одной модели во всем мире почти разом вышли из строя)

    2. При наличии возможность, разноси хранение копии в пространстве!
    Не храни яйца в одной корзине.
    Идеальный вариант, у тебя есть родня в другом городе, их бакапы ты хранишь на своем бакап-сервере, а твои бакапы хранишь у них. Это исключит сценарий пожара/землятрясения/кражи одновременно оригинальных данных и сервера бакапов.

    2.5. При наличии денег делай третью копию на онлайн сервисах хранения данных
    Этот вариант увеличивает стоимость бакапа но добавляет надежности к хранению данных и возможно увеличивает время восстановления данных (отличный пример, твой бакап у родни в соседнем городе но они 'на даче', их сервер выключен и приедут они только 'завтра')

    3. софт, выбирай сам, для mac timemachine почему нет
    ищи возможность настраивать инкрементальный бакап с возможностью восстановить выбранный бакап во времени, это нереально помогает и даже частично исключит проблему с вирусами-троянами с отложенным запуском (пример ситуации - вирус попадает в бакап для этого после заражения не активируется сразу, но активируется после восстановления)
    Регулярность бакапов настраивай как можно чаще, сколько позволяет выбранная технология (некоторые позволяют чуть ли не ежеминутно все делать, но это не mac, там файлы сканируются).
    Обязательно настраивай мониторинг здоровья архива. Не игнорируй варнинги и сообщения о проблемах. У меня на руках пример смерти raid5, рейд месяц сообщал вникуда об отвале диска и когда помер второй диск данные развалились (один из трех массивов так и не собрался, ковыряюсь все еще)

    4. проверяй работоспособность бакапа!
    Без этого вся возня бессмысленная. буквально, делай восстановление хоть на левую машину, всех данных, проверяй глазами их корректность, можно какой-нибудь софт на это натравить, но универсальных ответов нет, все от данных зависит и понятия - верные ли они, у меня был момент когда из бакапа восстанавливался битый файл - картинка, читался без проблем, просто вместо изображения - мусор, я тогда так и не понял что это такое, но полагаю если бы я делал такую проверку ранее, я бы это заметил до того как оригинальные данные были бы удалены.
    Ответ написан
    1 комментарий
  • Почему может тормозить простейший запрос?

    @rPman
    В чем отличия в серверах? количество оперативной памяти? мажорная версия mysql? настройки?
    есть возможность сравнить конфигурации mysql прошлого сервера и нового с помощью SHOW VARIABLES и уже сравнив их на примере каких-нибудь буферов можно что то менять.

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

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

    Так же предлагаю провести эксперимент, замени SELECT page_id FROM blitz_tasks WHERE stage = 1533 на список значений в константах (1,2,3,4,...), и если это поможет (а должно так как запрос теперь лезет только в одну таблицу и не трогает другие индексы) то будешь дробить свои запросы, избавляясь от вложенностей и нескольких индексов в одном запросе
    Ответ написан
    8 комментариев
  • Как проверить файлы и найти в них 3 наибольших числа c#?

    @rPman
    2 подхода

    простой но не эффективный (для 15 файлов тебе пофиг) - это открыть по очереди файлы, добавить в массив из каждого число, затем отсортировать массив и взять последние 3 числа (или первые 3, если сортировать в обратном порядке)

    по сложнее - подходит, когда количество максимальных чисел заметно большое или переменное, в этом случае заводишь массив искомых чисел длиной +1 (длинной 4 в твоем случае), заполнив любым гарантированно минимальным значением (отдельный разговор каким, например -2147483647 для 32-битных целых) и затем открываешь по очереди файлы, читаешь из них числа, по одному, и добавляешь число в конец массива (заменяя лежащее там число, оно не нужно так как 4-ое), затем для каждого числа начиная с предпоследнего к первому делаешь операцию замены их местами, если текущее число меньше стоящего справа. По окончанию первые 3 числа и будут искомыми.
    Заполнение массива гарантированно минимальным числом иногда не подходит, тогда необходимо первичное заполнение массива делать числами из файлов, заведя переменную - текущий размер искомого массива, начиная с 1 и увеличивать до требуемых (в твоем случае 4)
    Ответ написан
    Комментировать
  • Exel изменяет время в ячейках?

    @rPman
    в свойствах ячейки задать формат даты, там подробно с примерами, кажется будет что то типа hh:mm
    Ответ написан
    Комментировать
  • Как вывести латинский алфавит?

    @rPman
    Если речь идет о конкретном алгоритме и знании что латинский алфавит записан в кодировке по порядку, то достаточно узнать код символа 'A' с помощью функции Ord, а все последующие символы получить прибавлением к этому коду номера буквы в алфавите (начиная с 0), числа преобразуют в символ с помощью функции Chr

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

    Цикл для указанного количества проходов делают с помощью for .. to .. do ... begin .. end
    Ответ написан
    Комментировать
  • Как свой федеральный номер телефона можно принести в voip?

    @rPman
    Теле2 тоже предлагает услуги облачной телефонии, на бизнес тарифах, от 700р кажется в месяц
    Ответ написан
    Комментировать
  • Как лучше выстроить связи таблиц в бд на основе json файла?

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

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

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

    @rPman
    Универсально и полностью автоматически такое провести очень сложно.

    Фактически тебе нужна программа, которая будет приводить предыдущую версию базы к новой.

    Это и ddl изменения и правки данных.

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

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

    Все это должна сделать программа миграции.

    Хорошим подспорьем могут являться утилиты сравнения двух баз данных, с ddl точно видел готовые утилиты, дающие sql, то для данных обычно не так удобно. Проще под каждую ситуацию писать что то свое.

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

    @rPman
    Да
    данные mediawiki хранятся в базе данных (кажется mysql), машиночитаемый способ, а значит можно закодировать любую адекватную задачу.
    Ответ написан
  • У меня проблема какаята,где?

    @rPman
    Проверь наличие записи с искомым id в json и как то это обрабатывай, по уму подумай а есть ли .json файл вообще, проверяй ошибки записи и т.п.

    А еще ты обманываешь пользователей :) ты сначала им говоришь что ранг увеличил и только потом его увеличиваешь, а если в этот момент что то произойдет?

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

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

    p.s. ну конечно лучше пользоваться готовыми базами данных, нет нужды изобретать паровоз, посмотри sqlite - это sql база данных на основе файла, нет никаких серверов и все просто и удобно
    Ответ написан
    6 комментариев
  • Как мне загрузить больше 24000 документов?

    @rPman
    И где код?

    Смотреть ошибки импорта, проверять сообщения об ошибках.

    В 99% случаев работы с csv у новичков и не только в самостоятельном парсинге csv файла и не знании что в его стандарте есть возможность размещения символа \n внутри строк, т.е. одна запись может быть размазана на несколько строк файла.
    Ответ написан
    Комментировать