• Как не бояться торрентов?

    Jump
    @Jump
    Системный администратор со стажем.
    Хочется узнать как не бояться скачивать приложения/игры/фильмы и т.д с торрент-трекеров.
    Обратитесь к психотерапевту - именно они лечат различные фобии.

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

    Какие из торрент-трекеров вы бы посоветовали и почему?
    Те на которых есть нужные вам файлы. Потому что использовать, те на которых нет нужных вам файлов смысла нет.
    Ответ написан
    Комментировать
  • Что быстрее mysql, mysqli или pdo?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Не стоит.
    Ответ написан
    Комментировать
  • Как найти ментора(наставника)?

    notiv-nt
    @notiv-nt
    Как ваше ничего? Да, моё тоже
    найти человека который хорошо разбирается в php и работает где угодно лишь бы не на фрилансе, договориться с ним, возможно и за деньги
    Ответ написан
    Комментировать
  • Как грамотно настроить получение используя curl при пагинации?

    SilenceOfWinter
    @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    зачем городить кучу соединений когда можно просто менять url в опциях? по поводу получения списка страниц - while цикл работаеющий пока сервер не вернет код 404.
    Ответ написан
    2 комментария
  • Зачем закрывать курсор и соединение к БД?

    @Stormx480
    Python Backend Developer
    Это называется устойчивой хорошей практикой, которая позволяет в будущем избежать большого кол-ва ошибок.

    Для начала надо определится с терминологией:

    cursor - Класс драйвера, через который происходит взаимодействие с базой данных.
    connection - Класс подключения к базе данных.

    У любой базы данных есть максимально допустимое кол-во подключений. Как и максимально допустимое кол-во открытых курсоров.

    Если не закрывать - вы рано или поздно упретесь в лимит.

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

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

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

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

    Как итог:

    1) Закрытие позволяет избежать ошибок, связанных с использование одних подключений в разных потоках.
    2) Не расстрачивает вашу оперативную память для создания ненужных подключений.
    3) Не забивает базу ненужными подключениями.
    4) Позволяет правильно распоряжаться транзакциями, и делать в определенной транзакции только определенные действия, а не пихать все в кучу.
    5) Вы не упираетесь в лимит подключений и не получаете ненужных об этом ошибок.
    6) Вы не получаете ошибок о том, что одно подключение пытается взаимодействовать с таблицей или данными, созданными в другом подключении, и залоченными или не расшаренными на данный момент.
    Ответ написан
    5 комментариев
  • Как отправить письмо на почту?

    colonel
    @colonel
    Разработчик PHP, Laravel
    Ответ написан
    Комментировать
  • Как сравнить массив с базой данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Делай trim перед запросом.
    Но вообще конечно бедный заказчик...
    Ответ написан
    3 комментария
  • Отказоустойчивый удаленный доступ, возможен ли при следующих условиях?

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

    Для обеспечения отказоустойчивость внешнего адреса должны выполняться условия:
    • IP пренадледит вашей организации
    • На вашу организацию зарегистрирована AS
    • С каждым провайдером у вас bgp пиринг и вы анонсируете провайдерам свой ip-адрес
    Ответ написан
    Комментировать
  • Как увидеть mac клиента на web сервере?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Мак доезжает до первого маршрутизатора, да и то не всегда. Это ниже по уровням OSI, чем веб-серверы.
    Ответ написан
    2 комментария
  • Для чего необходимо объединять землю?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    На пальцах:
    На "земле" ардуино может быть потенциал 0 В, а на "земле" потребителя - 200 Вольт относительно "земли" ардуино. Поэтому вместо ожидаемых 5 Вольт с потребителя на ардуино может улететь 205 Вольт со всеми вытекающими последствиями и красочными спецэффектами.
    Вот чтобы этого не было - потенциалы земли ардуино и потребителя уравнивают между собой, соединяя их вместе.
    Ответ написан
    Комментировать
  • Как правильно записать диапазон IPv6 адресов?

    @Wexter
    Калькулятор в помощь www.gestioip.net/cgi-bin/subnet_calculator.cgi

    Если я запишу диапазон как 2a03:2880::/8 - то я правильно понимаю, что в него попадут все адреса, которые начинаются на 2a03:2880?

    Нет, это будет 2a03::/8. правильная будет 2a03:2880::/32
    Ответ написан
    1 комментарий
  • Можно безопасно использовать удаленный вход в Windows server из интернета по RDP?

    @res2001
    Developer, ex-admin
    Можно:
    1.включить проверку подлинности на уровне сети
    2.не использовать самоподписанный сертификат (завести свой ЦС, генерить на нем сертификаты для сервера и клиентов)
    3.использовать только надежные протоколы шифрования
    4.включить проверку подлинности клиента
    5.изменить порт RDP по умолчанию - опционально
    Вот тут не плохо все описано.

    В целом это общие методы для защиты любого соединения (не только RDP) с помощью SSL/TLS.
    Ответ написан
    3 комментария
  • Безсерверные протокол передачи данных, что вы знаете о нем?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ip адреса известны заранее.


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

    Роль сервера - найти пользователей и связать их. А далее они уже могут соединяться друг с дружкой и приватно обмениваться данными. Какой-то клиент может даже стать сервером, или несколько клиентов (обычно в локальной сети используется).

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

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

    Если же у вас все и так известно - то нет смысла в сервере.
    Ответ написан
    7 комментариев
  • Проблема с SQL иньекциями. Не работает с 2 запросами в бд. Почему?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это да, косяк mysqli, совершенно неочевиное поведение. Стейтмент не позволяет использовать станартный фетч. Нужно сначала получить результат запроса, а потом уже фетчить.

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

    $stmt = $bd->prepare("SELECT * FROM `users` WHERE id=? ");
    $stmt->bind_param('i', $id); 
    $stmt->execute();
    $res = $stmt->get_result(); // вот это
    $row = $res->fetch_assoc();


    Вообще, пользоваться чистым синтаксисом mysqli может только мазохист. Поскольку это низкоуровневая библиотека, которая раскладывает каждую задачу на кучу мелких операций. Все эти операции нужны, без них нельзя обойтись. Но совершенно не оябзательно как попугай постоянно долдонить их в каждом запросе. Можно написать функцию, которая будет выполнять их внутри.
    $row = prepared_select($bd, "SELECT * FROM `users` WHERE id=?", [$id])->fetch_assoc();


    Но самое, конечно, смешное - это что SELECT запрос тебе здесь не нужен.
    Базы данных работают совсем по-другому. Тебе не надо перекладывать данные из одной таблички в другую. Твоя БД потому называтся реляционной, что в ней можно связывать таблицы. И получать данные на основании связей. То есть в таблице messages не нужны ни имя. ни аватарка. Нужен только id юзера. А все его причиндалы ты получишь потом, при выводе, из таблицы users, используй JOIN запрос.
    Ответ написан
    Комментировать
  • Как из foreach получить первое значение?

    New_Horizons
    @New_Horizons
    Бред:
    $firstRecord = $item['Slider']->records[0];

    $firstRecord = reset($item['Slider']->records);

    foreach($item['Slider']->records as $record) {
        $record;
        break;
    }

    Что-то должно сработать.
    Ответ написан
    6 комментариев
  • Как лучше защищать запросы?

    @dmshar
    Правильно.
    Ответ написан
    Комментировать
  • Мат. Плата для Ryzen 7 3700x?

    @antonwx
    Подойдёт
    www.gigabyte.ru/products/page/mb/x470_aorus_gaming...
    свежую прошивку биос только установить надо
    Ответ написан
    Комментировать
  • Вопрос покупки MacBook Pro 13 2018?

    DevMan
    @DevMan
    память, в отличие от диска, не наростить.
    я бы вообще не рассматривал для разработки меньше 16 гигов.
    Ответ написан
    Комментировать
  • Как узнать разницу между датами в днях?

    DevMan
    @DevMan
    $time1 = new \DateTime('2018-01-01');
    $time2 = new \DateTime('2019-01-01');
    echo $time1->diff($time2)->days;
    Ответ написан
    Комментировать