Задать вопрос
  • Стоит ли делать отдельный микросервис для Баз данных?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    1 микросервис - 1 БД


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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Кто то счетает это хорошей идеей, как возможность связать все сервисы

    Тем временем центральная идея микросервисов в том, чтобы связанность максимально снизить.
    Ответ написан
    Комментировать
  • Как задать запрос в базу mysql с массивом данных?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега MySQL
    Понятия не имею как с этим работать.
    Поскольку это даже не JSON, а сериализация средствами PHP, то единственный адекватный способ - получать все записи из БД, десериализовывать и в коде считать что нужно.
    Ответ написан
    2 комментария
  • Существуют ли такие шпионский программы?

    @rPman
    Это возможно, android для этого предоставляет все возможности, в т.ч. при заблокированном экране, даже видео снимать можно и root для этого не нужен, пример приложения ip webcam.

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

    p.s. существуют очень убедительные доводы, что к примеру youtube (в данном случае скорее всего весь google apps фреймворк) да и любое приложение крупных соцсетей (фейсбук, vk,...) слушают микрофон постоянно, рекгируя как минимум по ключевым словам а скорее всего отправляя уже разобранный текст на сервера, для оптимизации рекламных алгоритмов или алгоритмов подбора контента (shorts/tiktok)
    Ответ написан
    3 комментария
  • Как научиться удерживать код в голове?

    xez
    @xez
    TL Junior Roo
    Никак.
    Если вам приходится чего-то там удерживать в голове, то это негодный, плохой код.
    Почитать:
    Декомпозиция
    Вонючий код
    Code Smells
    Ответ написан
    1 комментарий
  • Как получить имя переменной из строки?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для этого есть массивы
    $strs = [
        '123' => 'один два три',
        '578' => 'пять семь восемь',
        '015' => 'ноль один пять',
    ];
    if (array_key_exists($digit, $strs)) {
        echo $strs[$digit];
    }
    Ответ написан
    3 комментария
  • Команды в cron не выполняются полностью. Как решить?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Скорее всего крон не находит команду google-chrome
    Укажи полный путь /path/to/google-chrome
    Ответ написан
    2 комментария
  • Подсчёт в бд по возрастанию?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    2 < 10
    '2' > '10'
    Непправильный тип поля place.
    Ответ написан
    3 комментария
  • Как лучше устраиваться, по ИП или ТК РФ?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Конечно же по ТК :) Потому что только при устройстве по ТК есть "работник" и "работодатель". При работе с ИП ничего такого нет, есть просто контрагент. Другая модель отношений, понимаете? В отношении работника у работодателя куча ( да нет, даже КУЧА) обязанностней - от оплаты отпуска до проблем с травматизмом (не говоря уже про беременность и декрет), в отношении ИП - ничего такого нет :)

    Отношения с ИП очень простые - договор на поставку товаров или оказание услуг и соответствующие закрывающие документы.

    ВСЕ.

    Как ИП ведет свой бизнес - пофиг. Причем оплата товаров/услуг регламентируется совершенно другими законами, нежели выплата зп работнику :) Работать с ИП очень выгодно работодателю, но крайне не выгодно работнику (который ИП).
    Легко уволить, не выплатив даже увольнительные, легко уволить также со стажировки?

    Нет такого понятия. ИП не "принимают на работу" поэтому его нельзя "уволить". С ИП заключают договор. Который да, можно расторгнутьв любое время. Да, там могут быть санкции за досрочное расторжение - ну тут уж как пропишете. Договор - Ваш единственный правоустанавливающий документ.
    Ответ написан
    Комментировать
  • Можно ли с нуля обучится программированию, используя только интернет и не тратив деньги?

    Adamos
    @Adamos
    Можно ли с нуля обучится программированию, используя только интернет и не тратив деньги?

    Я, научившись программировать с нуля, не потратив на это обучение ни копейки и сделав это еще до появления в России интернета, свидетельствую: можно.

    нужны люди, которым я смогу задать пару вопросов.

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

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

    @Everything_is_bad
    А рекурсия где, в питоне? может пора узнать про рекурсию на уровне SQL? Так же иногда "дешевле" разом выбрать все записи, а потом уже на уровне python собрать иерархию. Ну и сразу, есть минимум три распространённых способа хранения "вложенности" adjacency list, materialized path, nested sets изучи их.
    Ответ написан
    1 комментарий
  • Почему в ответе скрипта появляется закрывающий тег РНР?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Для ответа на этот вопрос нужна всего лишь капелька здравого смысла.
    Ну и адекватное восприятие реальности, с чем у большинства населения, увы, как раз большие проблемы.

    Человек с адекватным восприятием реальности сделает очень простое умозаключение: если в ответе появляются посторонние символы, то это значит, что они присутствуют в скрипте. После этого найдет эти символы и удалит. Тупо проверив все файлы, которые участвуют в обработке запроса.
    А для неразрешимой проблемы "почему на локалке посторонних символов нету" найдет простое рациональное объяснение: файлы "на локалке" и "не на локалке" отличаются.

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

    Ну и поскольку у меня глаза не могут смотреть на эти хаотичные телодвижения, то вот как этот код может выглядеть на самом деле

    файл init.php
    <?php
    $conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8mb4', DB_USER, DB_PASSWORD);  
    $conn -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); 
    
    set_exception_handler(function ($e)
    {
        http_response_code(500);
        error_log($e);
        echo json_encode([
                'code' => 'error',
                'message' => 'Internal server error'
        ]);
    });

    файл с кодом
    <?php
    // Подключаемся к базе данных
    require 'init.php';
    
    // Получаем данные
    $list = get_list($conn);
    
    echo json_encode([
        'code' => 'success',
        'data' => $list
    ]);


    Без всей этой кропотливой возни и самоповторов.
    Отсутствие данных ошибкой не является. В JS можно проверить массив data и вывести сообщение, что он пустой. Никакой специальный код для этого передавать не нужно.
    А настоящие ошибки надо обрабатывать единообразно, в одном месте. А не писать обработку после каждой строчки, причем каждый раз по-разному.
    Ответ написан
    3 комментария
  • Как делать максимально безотказные бэкапы корня сайта и mysql в динамике?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега MySQL
    Делают read-only реплику и бэкапят её обычным способом.
    Ответ написан
    Комментировать
  • Можно ли всем строковым полям задавать тип TEXT и повлияет ли это сильно на производительность?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Судя по этой статье можно всегда использовать TEXT вместо CHAR(N) и VARCHAR(N), т.к. производительность особо не страдает.

    А если самому пойти в документацию, то можно увидеть следующее:
    There is no performance difference among these three types, apart from increased storage space when using the blank-padded type, and a few extra CPU cycles to check the length when storing into a length-constrained column. While character(n) has performance advantages in some other database systems, there is no such advantage in PostgreSQL; in fact character(n) is usually the slowest of the three because of its additional storage costs. In most situations text or character varying should be used instead.

    Т.е. в производительности разницы нет - только в стоимости хранения. (в отличие от других СУБД)
    Ответ написан
    5 комментариев
  • Как ведут себя данные при удалении?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В реляционных БД не существует гарантий относительно порядка записей внутри таблицы. Этот порядок
    - это особенности технической реализации хранения данных внутри блоков и сегментов. Это - "know how"
    и это будет зависеть от типа DBMS (Postgres, MySQL, Oracle) и от типа таблицы (heap, index-organized, clustered e.t.c)

    Если говорить грубо, то записи (data-rows) лежат не плотно а вразнобой с пробелами с выравниванием
    к блокам. Ну тоесть вообще-вообще не так как в Excel. Удаление data-rows в Postgres насколько я помню
    физически не удаляет запись а помечает ее мертвой используя служебные поля. Впоследствии VACUUM
    делает работы по уплотнению.

    Поэтому порядок ты сам обеспечиваешь, делая запрос с опцией ORDER BY some_date_time.
    Ответ написан
    1 комментарий
  • Почему у черной дыры есть электрический заряд?

    Vindicar
    @Vindicar
    RTFM!
    Причина раз: правило сохранения заряда. Электрический заряд нельзя создать и уничтожить, только перераспределить в пространстве.
    Причина два: с точки зрения внешнего наблюдателя тело будет падать в чёрную дыру за бесконечное время. Его влияние на окружающую вселенную - например, испущенный свет - будет бесконечно ослабевать, но никогда не станет нулевым. При этом с точки зрения падающего тела, падение займёт очень даже конечное (и не слишком большое) время. Относительность - она такая.
    Ответ написан
  • Идти ли на аутстаф как на первую работу програмистом?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Новичкам обычно выбирать не приходится.
    Ответ написан
    Комментировать
  • Как сделать взаимодействие между несколькими процессами?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Как уже было сказано - это называется IPC
    Если нужно обмениваться данными, то можно использовать техники:
    - Сокеты: TCP/IP можно практически везде, Unix-domain - только в unix системах, но будет быстрее
    - Сигналы: можно передавать данные вместе с сигналом, но только int/указатель, т.е. вариантов не много
    - stdout/stdin: при создании дочернего процесса получить его stdout/stdin потоки и работать с ними
    - Каналы: можно создать канал (анонимный или именованный) и общаться через него
    - Внешний сервис для общения: какой нибудь RabbitMQ, но это чересчур
    - Общая память (Shared Memory): но может не работать во некоторых ЯП
    - Общение через файлы: один процесс пишет в файл и по окончании шлет сигнал другому процессу, который этот файл читает
    - Memory Mapped File : тот же вариант, что и с файлами, но быстрее и при больших данных можешь словить OOM и большое потребление памяти
    - ZeroMQ - это очередь сообщений, которая работает в user-space

    Дополнительно надо помнить, что есть ограничения различных платформ, ОС, ЯП и некоторые варианты там работать не будут
    Ответ написан
    Комментировать
  • Как максимально быстро найти в диапазоне IP-адресов или подсетях нужный IP-адрес?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Вообще, лучшая структура данных для этого - trie. Диапазоны, я уверен, идут так, что там фиксированно сколько-то начальных бит, а все оставшиеся - любые - все попадают в эту подсеть. Более того, все эти коды префиксные - ни один не будет началом другого.

    Поэтому вам надо лишь эти префиксы в trie сложить, а в вершине сохранить саму запись. При запросе надо спускаться по битам айпишника в trie, пока не упретесь в лист - вот он и соответсвтует искомому диапазону.

    Если хотите использовать существующие БД, то можно сохранить в любой реляционной базе данных начала диапазонов. По запросу IP вам надо найти последнюю стороку не больше его. Буквально
    where range_start <= IP order by range_start desc limit 1
    .

    Смотрите только аккуратно, что сравнивать их надо как битовые строки/32-битные числа, а не просто как строки. Ибо должно выполнятся 127.0.01 > 8.8.8.8. Сравнение как строки же не сработает. Или храните как битовые строки, или преобразуйте в числа, или нулями отбивайте октеты, короче трех символов.

    Раскрывать все 4 миллиарда айпишников в отдельные записи - вообще не работающая идея.
    Ответ написан
    Комментировать
  • Как максимально быстро найти в диапазоне IP-адресов или подсетях нужный IP-адрес?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    В PostgreSQL есть специальный тип данных для хранения адресов и набор функций для работы с ними
    Ответ написан
    Комментировать