Задать вопрос
  • Почему else — invalid syntax?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну неужели самому не видно что предыдущая строчка без отступа?
    Ответ написан
    1 комментарий
  • Как массив из обьектов сделать уникальным?

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

    Если надо посчитать всего лишь классы, то методика всегда одинаковая: исходный массив перебирается в цикле, и создаётся новый массив, где ключом является значение, которое надо подсчитать, а значением - его количество.
    Ответ написан
  • Создать таблицу базы данных postgresql из json файла?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Я бы исходный джейсон развернул в словарь, где ключом является id
    И дальше шёл просто по этому словарю, добавляя записи в БД. Проверяя, есть ли уже парент.
    если нет - то создавать по цепочке, пока не появится
    Ответ написан
    Комментировать
  • Как убрать элементы из многомерного массива?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Пройти в цикле по обоим массивам и проверять, есть ли индекс в первом. Если нету - удалять элемент с таким индексом
    Важно: удалять надо по полному адресу, $array['DESCRIPTION'][$key]
    Ответ написан
  • Как настроить кодировку?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Вопрос сложный, это издержки разработки под виндоуз.
    Весь мир давно уже работает с кодировкой utf-8, а эта допотопная система всё ещё выдаёт свои ошибки в 1251.

    Я бы не стал делать никаких специальных телодвижений по перекодированию ошибок виндоус. На боевом сервере эта проблема будет неактуальной, а пару раз при разработке можно и потерпеть.
    Как вариант - сделать запись ошибок в лог, и смотреть их каким-нибудь Блокнотом - он покажет нормально.
    Ещё как вариант - не использовать опенсервер или чем вы там пользуетесь, а использовать встроенный сервер РНР - он перекодирует выводимые на экран ошибки в utf-8.
    Ответ написан
    1 комментарий
  • Как сделать повторный запуск программы через input, ответом "да или нет"?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Фарш невозможно провернуть назад.
    Блок else вызывается ПОСЛЕ того, как блок while ЗАКОНЧИЛ работу.

    В данном случае, если хотим вернуться, то очевидно что всю логику надо писать внутрь while, а else тут просто не нужен. А всю начинку оттуда добавить в ветку, где чел угадал номер.
    Ответ написан
  • Как лучше поступить с таблицей бд?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Можно удалять по первичному ключу, можно помечать как удалённые. Сам вопрос холиварный, единого ответа на него нет. Исходите из требований своей бизнес-логики.
    К "выгоде" этот вопрос отношения не имеет.
    Ответ написан
    3 комментария
  • Как соотносятся между собой mysql и mariadb?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Для вашего уровня разницы никакой.
    Ответ написан
    Комментировать
  • Почему не работает if(isset()) в woocomerce wordpress?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Если не работает условие
    if(isset($_POST['woocommerce_checkout_place_order']))
    то это значит, что либо запрос был не методом POST, либо в нём нет поля woocommerce_checkout_place_order
    Ответ написан
  • Как составить запрос MySQL?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    просто дописать джойны всех трёх таблиц
    Ответ написан
    8 комментариев
  • Есть ли разница между памятью в PHP и C#?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    РНР работает как консольная утилита. Запустился, поработал долю секунды, завершился.
    Поэтому вопросы управления памятью в 99% случаев РНР разработчиков не волнуют. Как и её очистка
    Чисто технически подробности управления памятью также полностью скрыты от разработчика.
    Всё что надо знать о работе РНР с памятью - "РНР работает с памятью за тебя"
    Так что в целом, единственное что вас должно интересовать - это не работать с большими объёмами данных в скрипте. Но это и так очевидная рекомендация.

    Если хочется прям вдаваться в детали (хотя совершенно непонятно, зачем это джуну), то PHP insernals Memory management
    Ответ написан
  • Как подобрать данные из локальной базы данных пользователя через Django?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Чтобы подключиться к удалённой БД, надо в её настройках разрешить удалённые соединения (bind_address) и добавить соответствующего пользователя. Плюс открыть порт на файрволле.
    Так же, если соединение происходит не через VPN, то очень желательно настроить SSL соединение.

    Но учитывая задачу, сама постановка вопроса неправильная. надо делать не входящие соединения на удалённые компьютеры, а исходящие с них.
    Ответ написан
  • Как приветси GET-ответ в удобочитаемый вид?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это называется не "GET ответ", а JSON
    Ответ написан
    Комментировать
  • Как сохранять данные полученные с api в базу данных mySQL?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Написано же, простым русским языком: download each 24 hours & cache it
    То есть никаких "реализовано через api" тут быть не может. Разумеется, при работе с внешними АПИ полученные данные всегда сохраняются локально, и показываются из кэша. В простейшем случае кэш пишется в файл, но удобнее работать с базой.

    "Как сохранять данные полученные с api в базу?" вопрос откровенно дурацкий. Точно так же, как и любые другие.
    Ответ написан
    Комментировать
  • Why does Not all parameters were used in the SQL statement error apear?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    "I am try" звучит примерно как "я попытайся".

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

    В том, чтобы наугад писать какие-то слова от балды, нет ничего зазорного - мы все так делаем. Примерно как с английским - да какая разница, try или trying? Но в отличие от английского, языки программирования позволяют нам проверить, соответствует ли результат ожидаемому.
    И в данном случае сообщение об ошибке нам даже подсказывает, куда смотреть: ему явно не нравится значение, которое мы добавляем в БД. И дальше надо сделать две простые вещи:
    Первое - спросить себя, сколько значений мы хотим добавить в БД?
    И второе - распечатать переменную, которая содержит эти самые значения. Сделать такую банальность, как print(val). И сравнить реальность с ожиданиями.
    А дальше совсем просто - полюбовавшись на дело рук своих, начинаем смотреть: каких-таких функций мы навызывали, что у нас получился такой результат. И избавиться от ненужной.

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

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Для человека, который только-только осваивает азы SQL, важно для начала понять, как работает вот такой базовый вариант. Как вообще таблицы соединяются между собой.
    select p.* from products p 
    join product_country pc1 on pc1.product_id=p.id and pc1.country_id=1 
    join product_country pc2 on pc2.product_id=p.id and pc2.country_id=2

    [inner] join находит все записи из левой таблицы, для которых есть соответствие в правой таблице, и которые удовлетворяют условию в ON.
    Соответственно, первый джойн отбирает все записи, которые соответствуют country_id=1,
    а второй - оставляет из получившегося набора только те, которые соответствуют и country_id=2
    Ответ написан
    Комментировать
  • Как правильно отформатировать query string внутри json?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это какой-то кошмар.
    Никогда нельзя ковыряться руками в специализированных форматах.
    А надо использовать только предназначенные для этого инструменты. Тем более что это не так сложно.
    В данном случае надо
    • аккуратно распаковать json
    • вытащить из него и аккуратно распаковать query string
    • поменять значение на нужное
    • аккуратно запаковать query string
    • аккуратно запаковать json
    • и никаких f-strings!
    from urllib import parse
    import json
    
    text =  '{"req":[{"index":"prod","param":"q=%s&hits=4&filters=live%3A1"}]}'
    arr = json.loads(text)
    qs = parse.parse_qs(arr['req'][0]['param'])
    qs['q'] = model
    arr['req'][0]['param'] = parse.urlencode(qs,doseq=True)
    text = json.dumps(arr)

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

    spoiler
    Такое ощущение, что Питон - это новый пэхапе. 10 лет назад на пыхе точно также колупали чем попало, лишь бы заработало здесь и сейчас. И теперь тоже самое в питоне начинается
    Ответ написан
    5 комментариев
  • Как перенести длинную строку в коде?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    $send .= "sudo screen -dmS screen_name docker run $user_container $memory_container -d -it --cpus '1' --memory=" . $mem."m $v1 $v2 $v3 $v4 $v5 -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 $v6 $v7 $v8 $v9 $v10 $v11 $v12 $v13;";

    но как же я задолбался все эти кавычечки выковыривать
    Ответ написан
    2 комментария
  • Возможно ли в PHP по заголовкам точно определить устройство и Браузер?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Весь вопрос в требуемой точности.
    Я могу написать в юзер-агенте что у меня FireChrome Opera версии 100500 для межгалактических планшетов.
    А на самом деле это будет Brave для PC XT.

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

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    select * from users where rating < ? order by rating desc limit 10
    select * from users where rating > ? order by rating limit 10
    Ответ написан
    1 комментарий