Задать вопрос
  • Windows. БД и php — IIS или open-source?

    Vamp
    @Vamp
    Пользователям win, учиться разработке и профессионально работать с php и БД можно естественным путём и в IIS, — он бесплатен и предустановлен в системе по умолчанию.

    Изучать сам язык php можно как угодно, где угодно и в чём угодно. Даже на IIS, прости господи. Вот только в реальном мире сайты на php никто не хостит на винде в целом и на IIS в частности. Поэтому когда дело перейдёт от обучения к реальной практике, вы даже не сможете задеплоить сайт на настоящий хостинг, который гарантированно будет на линуксе + nginx/apache2.

    Буквально в прошлом месяце была у меня такая история. Компания заказала сайт на битриксе какому-то фрилансеру. Он его захостил где-то у себя, чтобы показывать заказчикам. Потом когда дело дошло до переноса сайта с его хостинга на хостинг компании, то начались необъяснимые сложности. Он смог только по FTP залить файлы сайта, а дальше, по его словам, "какой-то неправильный хостинг вы купили". Хотя это самый стандартный vps на линуксе. Причём по специальному тарифу от хостера, оптимизированному под битрикс. Уверен, этот товарищ тоже учился разрабатывать на IIS, а теперь не может даже разобраться как настроен апач и mysql на новом месте. Вполне возможно он даже php не знает. В битрикс разработке такое тоже встречается.

    Сторонний open-source типа какого-нибудь xampp, open-server и т.п. нужно скачивать, устанавливать, а иногда, пусть даже и не большую, монетку задонатить, соответственно захламляя при этом ОС сторонним софтом, по сути, без строгой необходимости.

    Как минимум php и mysql вам абсолютно точно придется скачать и захламить ими свою систему, так как их не бывает в виндовсе из коробки. А раз уж всё равно что-то скачивать и устанавливать, то нет большой разницы будет ли это xampp, open-server или что там ещё есть. И донатить монетку необязательно.

    Тем не менее большинство пользователей win предпочитают использовать не родной IIS, а сторонний open-source (игнорируя при этом его родную среду линух).

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

    Это кажется странным. Закономерно предположить, что должна быть причина, — в чём она?

    Не очень понятно что именно вам показалось странным. Можете уточнить этот момент?
    Ответ написан
  • Windows. БД и php — IIS или open-source?

    @Drno
    потому что надо сразу учиться на нормальном софте, на котором потом и будет запускаться проект
    а это обычно линукс + nginx \ apache2
    Ответ написан
  • Как сделать переходник с usb 9 pin на usb 4 pin?

    opium
    @opium
    Просто люблю качественно работать
    Как уже сказали — это два отдельных USB порта в одном разъёме. Бери любой ряд (пины 1–4 или 5–8), там стандартный набор VCC, D−, D+, GND. Паяй к USB-кабелю, второй ряд просто не трогай. Только сверь ориентацию разъёма на картридере перед пайкой, чтоб полярность не перепутать.
    Ответ написан
    Комментировать
  • Как сделать переходник с usb 9 pin на usb 4 pin?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ничего не дублируется. На материнской плате разъём на два порта.
    Ответ написан
    Комментировать
  • Как получить доступ к SQL-базе Bitrix 14.5?

    opium
    @opium
    Просто люблю качественно работать
    Localhost в .settings значит что MySQL подключается локально, на том же сервере. На обычном шареде порт 3306 снаружи обычно закрыт, так что по IP подключиться скорее всего не выйдет. Поищи в панели хостинга phpMyAdmin или опцию remote MySQL — если её нет, спроси у саппорта.
    Ответ написан
    1 комментарий
  • Как понять, что-то с монитором или глючит видеокарта?

    VoidVolker
    @VoidVolker Куратор тега Железо
    Dark side eye. А у нас печеньки! А у вас?
    Проверить на другом мониторе без переходника на VGA. Причиной артефактов может быть переходник, видеокарта, кабель или сам монитор. Бенчмарк не навредит. Если видеокарта помирает — она может окончательно умереть от любого чиха. Меньшая вероятность, что это может быть какой-то баг в дровах, но этот вариант тоже не следует исключать. Возможно какой-нибудь 3D ускорение включается, а в 2D режиме этот блок в видюхе не используется (был случай с новым процессором: винда встала, работает, всё ПО тоже работает, а как запускаешь любой бенчмарк для нагрузки проца — всё виснет намертво). Так что погонять видюху во всех 3D и 2D режимах имеет смысл.
    Ответ написан
    3 комментария
  • Как оптимизировали сайт, что он летает?

    @Refguser
    Решения для бизнеса: корп.сайты, ИМ, боты и пр.
    Пинг вообще не имеет отношения к скорости работы сайта (но имеет к скорости доставки).
    Чтобы дать первоначальную оценку скорости загрузки на локальный ПК нужно открыть вебтулс, смотреть на цифры и думать.
    spoiler
    7BfC9lu.png
    вс имеет более быструю загрузку в первую очередь из-за грамотной работы с изображениями (ленивая подгрузка, миниатюры, оптимизация и пр). Чего у хабра не наблюдается (или частично).


    Для оценки "в среднем по больнице" нужно пользоваться различными сервисами (не забывая про регион). Например tools.pingdom.com
    Ответ написан
    Комментировать
  • Как получить 3 массива из одного запроса?

    W1DO_DIGITAL
    @W1DO_DIGITAL
    Senior Tech Lead | AI Solution Architect | Founder
    Выполните запрос без условий и итерируйте результат, используя значение статуса как ключ для динамического формирования подмассивов. В цикле while через fetch_assoc добавляйте имя пользователя в массив вида $data[$row['status']][], что автоматически сгруппирует их по категориям. После завершения цикла вы получите структурированный массив, где элементы доступны по индексам 0, 1 и 9 без лишних обращений к СУБД.
    Ответ написан
    Комментировать
  • Как спарсить Интернет Магазин?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    реально ли вообще пробить эту защиту на чистом PHP

    Если на сайте используется SSR и нужные вам данные сразу отдаются на странице — то да, вполне можно всё спарсить. В ином случае придётся использовать браузерный движок — для селениума есть обёртки для разных ЯП, нет строгих ограничения только для питона. Методика обхода защиты строится от самой защиты — она исследуется и пишется соответствующая логика.
    Ответ написан
    Комментировать
  • Как удалить число содержащееся в ячейке таблицы бд Mysql среди чисел через запятую, если таких чисел 2 или более удалить только первое найденое?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Самый правильный вариант - хранить корзины в отдельной таблице (user_id, goods_id, count).
    А такие манипуляции со строками - тупиковый путь.
    Ответ написан
    8 комментариев
  • Как декодировать/закодировать спец символы в get запросе?

    Vamp
    @Vamp
    Вам нужно использовать функцию rawurlencode

    $a = '?' . rawurlencode('email') . '=' . rawurlencode('email+chtoto@gmail.com')


    А ещё лучше воспользоваться специальной функцией для составления query string:
    $a = '?' . http_build_query(['email' => 'email+chtoto@gmail.com']);
    Ответ написан
    1 комментарий
  • Каким образом PHP-FPM-менеджер распределяет запросы между своими процессами?

    moderatorh
    @moderatorh
    В IT с 1987-го года.
    В теорию глубоко не вникал, но механизм там примерно такой, по крайней мере в связке с веб сервером, например с Nginx.
    В конфиге настраиваются как минимум три важных параметра.
    1. Число постоянно работающих процессов (тредов) php-fpm
    2. Максимальное число одновременно работающих процессов
    3. Таймаут обработки запроса.
    Каждый следующий запрос передается сервером свободному процессу с минимальным айди (не по кругу).
    Если запущенного процесса нет и не достигнут лимит максимального числа процессов, то запускается новый процесс и ему передается пришедшийй запрос.
    После окончания работы, процесс освобождается и какое то время остается "дежурить" в системе, оно тоже настраивается. Если не пришел новый запрос за это время, процесс умирает
    Если все процессы заняты, то запрос не обрабатывается. Пользователь получает ошибку (код ответа HTTP)) 50x в зависимости от настроек. А Вы получаете в эррор лог ошибку о переполнении пула.
    Кстати плохая ошибка, наличие которой лучше отслеживать...

    Вышеперечисленные параметры действительно очень сильно влияют на производительность системы. Но вполне достаточно просто правильно рассчитать и задать эти параметры и все! Лезть глубже не нужно, это никак не ускорит работу системы. Работа с пулом там и так оптимизирована донельзя и создание нового процесса занимает микросекунды, потому там ничего не соберете...
    Если уперлись в быстродействие, то начинайте с правильного кэширования.
    Начиная с веб сервера, далее кеш сервер, обычно редис. (мемкешед почил в бозе...).
    Далее трясем базу данных и работу с ней и т.д.

    А вообще лучше практическую задачу обозначте, проще будет.
    Ответ написан
    Комментировать
  • Как на 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...

    — коммитить было нечего и коммит не создался. Но это не мешает делать push.

    6939b3c84ad34617699343.jpeg

    Совет: в любой непонятной ситуации смотрите 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 комментария