• Как в контейнере из php apache увеличить выделенную память?

    dikey58
    @dikey58 Автор вопроса
    Самоучка - web-разработчик
    Нашел. Был Init_set на сайте на 512MB
    Ответ написан
    1 комментарий
  • Как организовать поиск в БД с 1000 таблиц?

    @rPman
    То что базу надо правильно проектировать уже сказали.

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

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

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

    Таблица может иметь вид: tablename, columnname, id, value (если это критично, вместо одного текстового поля value можно заводить по одному на каждый тип или представление данных, в форме, по которой проводится поиск), при заполнении, индексов у этой таблицы быть не должно, в этом случае заполнение будет максимально оперативным (особенно если ее физическое размещение будет на другом носителе, смотри как в твоей базе данных создавать таблеспейсы или иные методы), допускается использование другой базы данных, в каком то смысле это даже более оправдано. Пустые значения (null и под задачу '' и может даже 0) можно сюда не добавлять, если поиск таких значений не актуален. Так же можно пропускать какие то таблицы, поля и даже записи по каким то критериям, если они могут быть не важны для анализа (например фильтрация по дате).

    После заполнения в таблицу нужно добавить индексы по value, и опционально по columnname/tablename. Теперь простой запрос select * from эта_cache_table where value=? даст максимально быстро результат.

    p.s. если речь идет о простом анализе данных в базе, например изучение структуры человеком, который разбирается в sql, можно очень простым способом сделать sql дамп всей базы и искать нужные значения простым поиском по строке (осторожно, в зависимости от базы данных, символы в строках могут экранироваться различными способами), так же можно поэкспериментировать с разными методами экспорта данных (например почти все базы имеют утилиты экспорта в csv)
    Ответ написан
    3 комментария
  • Как постоянно получать данные с БД?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Почитать про брокеры, типа kafka/rabbit mq
    Ответ написан
    1 комментарий
  • Как корректно использовать пару JWT и Refresh токенов?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Следить за сроком жизни может как клиент, так и сервер или оба.
    В первом случае клиент, обнаружив просроченный токен доступа, сразу отправляет запрос на обновление. Недостаток - если на клиенте перевести часы назад, то он не обнаружит протухший токен.
    Во втором случае время всегда берётся с одного источника (сервера), но будет лишний запрос, на который сервер ответит, что токен просрочен.
    Ответ написан
    Комментировать
  • Как скорректировать плановую цель в связи с большим недовыполнением?

    KEugene
    @KEugene
    Вряд ли вы дождетесь готового ответа. Вам быстрее будет поискать ответы в материалах на тему Численные методы теории очередей. Думаю, в учебных пособиях такое рассматривается.
    Ответ написан
    1 комментарий
  • Как настроить DNS в Vagrant?

    @sequelone Автор вопроса
    Удалось побороть всё это дело. В гостевых системах Ubuntu 22.04 c Master и Slave открываем в редакторе файл /etc/bind/named.conf.option

    nano /etc/bind/named.conf.option

    И изменяем секцию forwarders {...} на следующее содержимое:

    forwarders {
                    // Router DNS
                    192.168.2.1
    
                    // Google Public DNS
                    8.8.8.8;
                    8.8.4.4;
     
                    // OpenDNS
                    208.67.222.222;
                    208.67.220.220;
            };


    Сохраняем (CTRL + S) и выходим из редактора nano (CTRL + X). После чего перезагружаем наши DNS сервера:

    systemctl restart named

    Открываем в браузере наш сайт https://sequel.loc и видим заветное сообщение:

    646133cbc05f0597774603.png

    То есть нужно указать главный шлюз нашего роутера.

    Создал обширный мануал https://github.com/SequelONE/Vagrant-CloudPanel-DNS

    Update:

    Удалось решить проблему с пингом из хост-машины. Подробности тут https://github.com/SequelONE/Vagrant-CloudPanel-DN... скоро перепишу мануал.
    Ответ написан
    Комментировать
  • Как можно установить glibc версии 2.29 или выше на ubuntu 18.04?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Нужно - устанавливайте в докер с более свежей ОС.
    Ответ написан
    Комментировать
  • Как правильно структурировать проект в Go?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Вам в комментариях уже подсказали https://github.com/golang-standards/project-layout... Но этот документ не имеет официальной поддержки или методической силы. Это только волонтёрская попытка унификации.
    Подход команды разработчиков языка виден в сырцах компилятора и стандартной библиотеки.
    Рекомендованный и однозначно принятый сообществом layout не утверждён.
    Особые свойства есть у папок internal и vendor. Эти папки при сборке рассматриваются тулчейном go иначе чем другие. Особые свойства этих папок отражены в официальной документации.
    Ответ написан
    Комментировать
  • Что эффективней, чтение из файла или массив?

    @Wan-Derer
    Зобанели на Хабре, волки́ ;((
    Если возникает вопрос "память или файл?", это значит что есть какие-то проблемы хранения в памяти: данных много и памяти может не хватить, данные должны сохраниться при перезапуске приложения, данные должны быть доступны из других приложений/инстансов, что-то ещё.
    В таком случае задачу хранения/записи/чтения данных лучше поручить отдельному сервису. Про базы данных уже сказали, я немного дополню. Если данные можно свести к такому представлению как пара ключ-значение, можно использовать базы данных NOSQL или сервисы типа Redis. Помимо стандартного интерфейса доступа и высокой скорости, они обладают хорошим качеством - их можно конфигурировать.
    Допустим, ты поначалу настроил сервис на хранение данных в памяти, а потом решил что для надёжности надо отписывать данные на диск (все, не все, сразу, периодически и т.п.). Ты просто прописываешь соответствующий конфиг - и всё, сервис начинает работать по-другому. А для твоего приложения ничего не изменилось (ну, кроме скорости доступа).
    Ответ написан
    Комментировать
  • Как написать нейронную сеть для распознавания изменений в графике?

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

    Можно решить при помощи простого условия "если замер n выходит за пределы диапазона допустимых значений, то сделать [что-то]", даже без привлечения статистики.

    Если тебе нужно что-то более сложное, что нельзя решить при помощи классических алгоритмов - гугли anomaly detection
    Ответ написан
    2 комментария
  • Python как быстро получить число элементов архива tar.gz?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Не получится из-за специфики устройства tar-файла. Пока весь не прочитаешь, не узнаешь сколько в нём каталогов. Это потоковый формат, а тут он ещё и сжат сверху gzip'ом.

    Это как посчитать быстро сколько вещей в чемодане. Пока по одной не вытащишь и каждую не посчитаешь - не узнаешь.
    У других архиваторов, например zip, есть индексная табличка. Это как бумажка с перечнем всех вещей в чемодане. Она лежит прямо под крышкой и её можно достать первой.

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

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Redis - Это БД в памяти, а не на диске. Отсюда следует, что скорость доступа к ней уже больше, только по этой причине. Плюс там есть еще дофига плюшек, в том числе постоянное хранение данных.
    Ответ написан
    2 комментария
  • Зачем для кеширования использовать Redis, если можно сделать файловое кеширование?

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

    Но понятие кэша гораздо шире. Кэшироваться может и специфичная для конкретного пользователя или запроса информация. В этом случае никаких .php файлов не напасешься.

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

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

    REZ1DENT3
    @REZ1DENT3
    web-developer
    Смотри в сторону томита парсера, который умеет извлекать семантику из предложения.
    Исходный код открыт: https://github.com/yandex/tomita-parser
    Пример простой семантики: https://github.com/yandex/tomita-parser/blob/maste...
    Ответ написан
    4 комментария
  • Как ускорить чтение строк из файла?

    egor_nullptr
    @egor_nullptr Куратор тега C
    mmap + ручной разбор, получилось примерно в 10 раз быстрее, чем fgets + sscanf
    Код

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <fcntl.h>
    #include <sys/stat.h>
    #include <sys/mman.h>
    #include <unistd.h>
    
    int main(int argc, char** argv)
    {
        int fin = open(argv[1], O_RDONLY);
        struct stat finfo = {0};
        fstat(fin, &finfo);
        char *map = mmap(0, finfo.st_size, PROT_READ, MAP_SHARED, fin, 0);
    
        char src[4] = {0};
        char dst[4] = {0};
        int cost;
        int i;
        int off = 0;
    
        while (off < finfo.st_size)
        {   
            memcpy(src, map + off, 3); 
            memcpy(dst, map + off + 4, 3);
            i = 0; 
            cost = 0;
            while (map[off + 8 + i] != 10) { 
                cost = cost * 10 + map[off + 8 + i] - 48;
                ++i;
            };
            off += 9 + i;
        };
    
        munmap(map, finfo.st_size);
        close(fin);
    
        return EXIT_SUCCESS;
    }

    Ответ написан
    2 комментария
  • Почему мой код считается медленным?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Изучение алгоритмов стоит начинать с чтения соответствующего учебника, как минимум станет известна методика оценки сложности алгоритма. И лучше это делать после того, как прочитан учебник по языку и документация по его стандартной библиотеке.
    Ответ написан
    Комментировать
  • Как заменить большое кол-во символов на другое?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Заменять хешированные пароли на дехешированные можно при помощи замены. В базах данные это UPDATE.

    P.S. Каков вопрос - таков и ответ, ни больше, ни меньше!
    Ответ написан
    Комментировать
  • Есть ли смысл учить Golang если уже хорошо знаешь .NET?

    GavriKos
    @GavriKos
    В том что если завтра вас уволят, то сможете отзываться на более широкий пул вакансий.
    Ну и общий кругозор расширите конечно
    Ответ написан
    2 комментария
  • Есть ли смысл учить Golang если уже хорошо знаешь .NET?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    1. Из коробки компилируется в единственный, сравнительно компактный, бинарь без зависимостей от рантайма и окружения.
    (и без подводных, в отличие от full aot и assembly trimming)

    2. Сможешь рассматривать вакансии, где требуется Golang, если собираешься искать работу.
    3. Сможешь нанимать go-шников со всеми вытекающими, если будешь искать разрабов в свой проект.
    4. Если твой проект должен будет активно взаимодействовать, например, с kubernetes и прочими devops-штуками, то Go может быть чуть удобнее, тк практически все эти инструменты написаны на Go и для работы с ними имеются готовые библиотеки, которые, вероятно, будут лучше, чем их альтернативы для .NET.
    Ответ написан
    3 комментария
  • Как извлечь текст книги из apk файла?

    @rPman
    Apk файл это zip архив, переименуй и открой

    Посмотри все файлы поиском по тексту, 1-2 слова, осторожнее с пробелами. Это будет легко, если разработчики не собирались мешать это делать, иначе от невозможно до очень сложно.

    Как вариант, ее в файле нет и книга скачивается и складывается в приватную область приложения, до которой можно добраться только с помощью рут доступа, в исключительных случаях можно сделать локальный бакап с помощью adb и уже покопаться в его файлах.

    Ну и универсальная классика, написать простой кликер, с помощью того же adb и наделать скринов
    Ответ написан
    Комментировать