Задать вопрос
  • Как на PHP пушнуть в ассоциативный массив?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ну дык же...
    $ready['new'.($i+1)] = array(
                'type' => 'payment',
                'title' => strval($methods[$i]->name),
                'fields' => array(
                    "price" => strval($methods[$i]->currencies->currency->price),
                    "currency" => strval($methods[$i]->currencies->currency->currency),
                    "code" => strval($methods[$i]->code)
                )
    );
    //array_push($ready, $arr);
    Ответ написан
    1 комментарий
  • Ошибка в php, как исправить?

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

    <?php
    session_start();
    if (isset($_SESSION['user']['id'])) {
        header("Location: /profile.php");
        exit;
    }
    require_once __DIR__ . '/scr/connect.php';
    $connect = getDB();


    • Поскольку само проверяемое значение нигде не используется, а важно только его наличие, то присваивать его переменной нет смысла.
    • Поскольку нас интересует наличие значения в сессии, то и проверяем мы именно наличие, с помощью isset.
    • Детсадовский пустой if с else переписываем на нормальный, просто инвертировав условие.
    • Соединение с БД делаем уже ПОСЛЕ поверки, поскольку при редиректе оно оказывается бессмысленным.
    • После ридеректа добавляем принудительный выход, поскольку сам редирект, внезапно, работу скрипта не прекращает (кто бы мог подумать).


    Если же нам в дальнейшем коде понадобится переменная (например, в том же profile.php), то тогда имеет смысл присвоить его переменной, используя оператор приведения к null как сокращённую форму проверки и присвоения с помощью isset():

    <?php
    session_start();
    $idUser = $_SESSION['user']['id'] ?? null;
    if ($idUser === null) {
        header("Location: /login.php");
        exit;
    }
    require_once __DIR__ . '/scr/connect.php';
    $connect = getDB();
    Ответ написан
    Комментировать
  • Как убрать сообщение об открытой крышке?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Крышка закрыта
    А датчик закрытия крышки нажат? Контакты на материнской плате замкнуты?
    692aebfbc674a172627346.png
    Если включена опция в BIOS, то пара контактов CHASSIS должна быть постоянно замкнута. Её размыкание считается вскрытием корпуса.
    Либо замкните эти контакты перемычкой, либо сбросьте CMOS. Для этого выключите компьютер, отсоедините кабель питания, на пару секунд замкните контакты джампера CLRTC, подсоедините кабель, включите компьютер, зайдите в BIOS и настройте как вам надо.
    Ответ написан
    2 комментария
  • Debian не освобождает кешированную память?

    @SunTechnik
    Свободная память - это выкинутая память (деньги за неё заплачены, а она не используется).

    Поэтому Linux всю свободную память использует под cache. Если приложения потребует память - он её отдаст от cache.
    Поэтому вопрос - с какой проблемой боремся?
    Ответ написан
    Комментировать
  • Подойдет ли desktop-ubuntu для разворачивания web- сервера?

    @AlexVWill
    Да, можно, но графический интерфейс лучше отключить, если он не нужен, ибо он все таки отдирает ресурсы, а для сервера он бесполезен.
    Ответ написан
    Комментировать
  • Подойдет ли desktop-ubuntu для разворачивания web- сервера?

    @Drno
    да. но зачем нужен UI на сервере - не ясно
    Ответ написан
    1 комментарий
  • Подойдет ли desktop-ubuntu для разворачивания web- сервера?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Подойдет, количество ubuntu, на которых можно за раз разворачивать ПО - не ограничено законом и верой. Другой вопрос - зачем.., но судя по вопросу - ответ на него не требуется.
    Ответ написан
    Комментировать
  • Почему при попытке сделать "git push" выдает ошибку?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    У вас проблемы в каждой команде.

    git commit -m "hw-EDU-9336"
    ...
    nothing to commit...

    — коммитить нечего. Git честно сообщает, что рабочая папка чистая и коммит не создался.
    Но это не мешает делать push.

    Совет: в любой непонятной ситуации смотрите git status. Смотрите его как до команд, так и после.

    git push
    ... The current branch ... has no upstream branch

    Здесь Git говорит, что текущая ветка не имеет связи ни с какой вышестоящей веткой. Git понятия не имеет, куда вы хотите пушить и что пушить.
    В общем случае команда выглядит примерно так:
    git push <репо_куда_пушить> <какую_ветку_пушить>

    Обычно при первой отправке мы просим гит создать связь локальной и вышестоящей веток.
    Гит подсказывает вам, как это сделать:
    git push --set-upstream origin hw-EDU-9336-sprint-1
    но можно написать проще, чтобы не мучиться запоминанием длинных названий:
    git push -b origin HEAD
    HEAD это синоним текущей ветки.

    Дальше у вас реальная ошибка. Скорее всего проблема в авторизации.

    Проверьте, что ключ действительно стучится в GitLab
    ssh -T git@gitlab.quality-academy.ru
    Успешный вариант: GitLab поздоровается и скажет, что логин найден.
    Неуспешный: "Permission denied (publickey)".

    И главное — публичный ключ должен быть добавлен в GitLab:
    User Settings → SSH Keys
    Если после этого Git продолжает упираться — значит просто нет прав на запись в репозиторий, а не проблема с ключами.
    Ответ написан
    2 комментария
  • Можно ли как-то сбросить или узнать пароль администратора в рабочей сети windows?

    @SunTechnik
    Странная ситуация.
    Но если у Вас системный администатор ушел со скандалом, то первое что надо делать - менять пароли, как минимум на пограничном оборудовании, желательно - сменить все пароли.
    И убедиться что у Вас настроено и работает резервное копирование...
    Ответ написан
    2 комментария
  • Как правильно реализовать структуру таблиц продукт и цены продуктов?

    если нет других товаров, кроме пиццы, то решение вполне годное.

    На будущее: вместо скриншотов, которые бесполезны чуть менее, чем полностью, пишите в вопросе DDL - в том же PHPMyAdmin его элементарно получить через кнопочку Export (она даже на скриншоты попала). Будет и компактнее, и информативнее.
    Ответ написан
    Комментировать
  • Чем грозит отключение света для ПК?

    NeiroNx
    @NeiroNx
    Программист
    В 99% случаев ничем не грозит, но это не значит что нужно стремиться в 1% попасть.
    Ответ написан
    4 комментария
  • Влияет ли, передаёшь ты в функцию аргументы по ссылке или по значению, на производительность и память?

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

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

    Да и выделение/освобождение памяти в куче дороже, чем выделение/освобождение памяти на стеке. (зато меньше риск получить висячий указатель или stack overflow)

    Хороший вопрос содержит половину ответа :)
    Ответ написан
    Комментировать
  • Влияет ли, передаёшь ты в функцию аргументы по ссылке или по значению, на производительность и память?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    По ссылке дешевле во многих случаях. Ибо передача по значению создает копию. Поэтому передача большого вектора по значению будет очень дорогой.

    В целом, в С++ хорошее правило - передавать большие переменные как const &.

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

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

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

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    1. Если ОС не смонтировала диск автоматически — смонтировать вручную
    2. Открыть смонтированный путь в mc

    Находим дисковод:
    sudo dmesg | grep -E -i --color 'cdrom|dvd|cdrw|cd/rw|writer'

    Монтируем:
    mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom

    Открываем в mc:
    mc /mnt/cdrom

    После окончания работы демонтируем диск:
    umount /mnt/cdrom/
    Ответ написан
    2 комментария
  • Какую разметку оптического диска выбрать?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Nero Burning ROM наше всё.
    Ответ написан
    1 комментарий
  • Почему Linux Ubuntu после установки не запускается без загрузочной флешки?

    @rPman
    загрузил ПО на свой ноутбук
    нужно не загрузить а установить.

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

    Еще момент, некоторые (все чаще вижу) производители материниских плат, скорее всего по требованию майкрософт, ломают процедуру настройки загрузочных записей UEFI, таким образом, что бы только установщик windows мог его менять (т.е. записываешь загрузочную запись, биос отвечает что все ок, записалось, но после перезагрузки все возвращается назад, а если это сделать из windows setup то все работает), в этом случае загрузчик придется создавать вручную из windows. Так же альтернатива, перевести bios в режим загрузки не UEFI а CSM (это еще может называться Legacy MBR или Legacy DOS или compatibility), что бы этот режим работал, нужно будет либо создавать тип разбиения дисков DOS (когда 4 раздела только можно, и лимит размера диска 2тб) либо в режиме GPT добавлять еще один раздел (настоятельно рекомендую в первых секторах) - biosboot.

    grub по умолчанию пытается установить оба доступных режима, и UEFI и CSM (если биос не будет загружен в режиме UEFI то будет доступна установка только CSM)

    Установить загрузчик можно вручную после установки, из командной строки linux:
    grub-install /dev/sda --root-directory=/mnt

    тут /dev/sda - это диск, на котором должен быть загрузчик (раздел biosboot либо диск с разбиением dos, если есть UEFI то нужно еще 100мб EFI загрузчик, диск типа efi boot и отформатированный fat32), а /mnt это диск, в который нужно вручную смонтировать установленную ОС (причем если она состоит из нескольких разделов, то смонтировать все, включая /mnt/boot/EFI раздел efiboot)

    p.s. повторюсь, тебе нужны разделы - biosboot (автоматически 1мб), efiboot (минимум 100мб), опционально /boot (обычно не меньше 500мб, и в 99% случаев он не нужен) и корневой /
    Это все можно сделать из мастера установки, когда будет предложено выбрать диск для установки (там будет отображены все диски и нужно будет указывать какой раздел какой точкой монтирования / или /boot является)
    Ответ написан
    Комментировать
  • Как выбрать сервисный центр (подозрение на неисправность памяти на видюхе)?

    @99insania99
    Отправить карточку Vik-on'у в сервис. Будет дорого. Но качественный ремонт и диагностика - не дешевые.
    Либо искать у себя в городе крупную сервисную компанию, которая обслуживает в основном юриков. Точно не стоит нести в будку "чиню холодильники, телефоны, ноутбуки, блоки наведения ракет, космические корабли, кастрюли".
    Ну и огласите хоть что за видеокарта. А то может там какая-нибудь 2060 super, которую чинить смысла никакого нет и в нормальном сервисе её даже не примут.
    Ответ написан
    2 комментария
  • Может ли клавиатура убить компьютер?

    VoidVolker
    @VoidVolker Куратор тега Железо
    Dark side eye. А у нас печеньки! А у вас?
    Да, вполне могла в результате короткого замыкания питания USB. Могла сработать защита порта USB и/или блока питания по линии 5 Вольт. А если нет защиты — то мог сгореть USB контроллёр и вполне возможно дальше по цепочке ещё что-нибудь сгореть и замкнуть могло.
    Ответ написан
    Комментировать
  • Как вычислить результат математических операций в строке?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Держите функцию. От сердца отрываю.

    function math($expression) {
        $expression = str_replace('^', '**', $expression);
        return eval("return $expression;");
    }
    
    $t = '5 + ( 10 - 2 ) ^ 2 % 10 * 2';
    $t = math($t);
    echo $t;
    Ответ написан
    2 комментария
  • В чем разница символической ссылки и скопированного пути?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Простой пример. Скрипт ежесуточно создаёт папку с текущей датой в названии и делает на неё символическую ссылку /some/directory/today. В настройках программы /some/directory/today указана как папка для сохранения каких-то файлов. В результате файлы каждый день сохраняются в отдельную папку, а программе не надо менять настройку.
    Ответ написан
    Комментировать