Задать вопрос
  • Как клонировать репозиторий в папку сайта?

    @MadridianFox
    Web-программист, многостаночник
    Если можете удалить всё из корня - удалите, а потом выполните там
    git clone <адрес репозитория> ./
    Репозиторий клонируется не в подпапку, а прям в текущую.

    Если не можете удалить всё из корня, то ничего страшного. Выполните
    git clone <адрес репозитория> ./tmp
    А потом просто перенесите всё из ./tmp в корень сайта и считайте корень сайта корнем репозитория.
    Только не забудьте добавить лишние файлы (которые были в корне сайта до этого) в гитигнор.
    Ответ написан
    Комментировать
  • Как решить проблему запроса на сервер?

    @MadridianFox
    Web-программист, многостаночник
    CORS - это защита встроенная в браузер.
    Именно браузер блокирует запросы на другой домен, если не настроены заголовки CORS.
    Соотвественно, чтобы браузер пропускал запросы, вам необходимо настроить CORS на сервере.
    Ответ написан
    Комментировать
  • Linux какую файловую систему выбрать?

    @MadridianFox
    Web-программист, многостаночник
    Недавно был пост на хабре по этому поводу:
    https://habr.com/ru/company/kingston_technology/bl...

    Кратко - выбирайте ext4 и не парьтесь, всё уже продумали за вас.
    Ответ написан
    Комментировать
  • Как автоматически запускать проект при падение?

    @MadridianFox
    Web-программист, многостаночник
    Выглядит так, будто вы уже неправильно запускаете ваш проект.
    reboot now это вы хотите прям на уровне операционной системы перезагрузиться? Зачем так радикально?
    Зачем заходить в скрин? Выскажу догадку - yarn start завершается когда вы выходите с сервера, и вы решили запускать его в скрине?

    Ну такое.
    Смотрите. Можно сделать надёжнее
    1) устанавливаете pm2 - менеджер процессов для долгоживущих nodejs приложений
    2) пишете простой как две копейки ecosystem файл
    3) запускаете своё творение не в скрине, и выходите с сервера не опасайсь что оно упадёт

    Далее можно организовать перезапуск приложения. Не сервера.
    Самый простой способ - повесить на этом же сервере на крон скрипт, который будет делать curl -s -o /dev/null -w "%{http_code}". Если ответ этой команды не "200" то выполнять команду pm2 restart myApp

    Кстати, если перебои в работе приложения происходят из-за того что прям процесс падает, то даже никакой крон не понадобится - pm2 сам следит за тем что приложение остановилось, и запускает его снова.
    Ответ написан
    Комментировать
  • User UNIX + user pg + db pg = все разные?

    @MadridianFox
    Web-программист, многостаночник
    И пользователя и БД можно указать при подключении.
    psql -U admin first
    Ответ написан
    Комментировать
  • Github, Как отправить файлы на удаленный репо, если сменил название локальной папки проекта?

    @MadridianFox
    Web-программист, многостаночник
    Название папки в которой лежит репозиторий никак не лияет на git.
    Также оно никак не влияет на отправку изменений в удалённый репозиторий.
    Ну и на гитхабе (на сайте) это никак не фиксируется и не настраивается.

    Уверен, вы можете откруть консоль, перейти в нужную папку и выполнить git push.

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

    @MadridianFox
    Web-программист, многостаночник
    Корзину надо хранить в БД, привязывать к пользователю или к идетификатор сессии пользователя, если он не авторизован.
    В момент авторизации прописываем id пользователя в корзину текущей сессии.

    Обязательно предусмотреть крон-команду, котрая будет удалять слишком старые корзины не привязанные к пользователям.

    Часто корзина это не только набор товаров, но и какие-то более общие параметры, например промокод, поэтому лучше корзину делать из нескольких таблиц, например baskets и basket_items
    Ответ написан
    2 комментария
  • Nginx в режиме обратного прокси нужно сайта сдвинуть в?

    @MadridianFox
    Web-программист, многостаночник
    Как уже написали в комментарии - то где искать стили решает приложение и по хорошему надо в каждом бэке сделать пути для подгрузки статики настраиваемыми.

    Однако, если все бэки находятся на одной машине, можно подставить костыль.
    Вы можете создать особый location, даже несколько, которые будут искать запрошенный файл сначала в одной папке, потом в другой, потом в третьей.
    location ~* \.(css|js)$ {
        root /path/to/back1;
        try_files $uri @back2;
    }
    
    location @back2 {
       root /path/to/back2;
       try_files $uri @back3;
    }
    
    location @back3 {
       root /path/to/back3;
       try_files $uri =404;
    }


    Если один из бэков находится не на этой же машине, то можно его поставить в конец и делать на него проксирование:
    location @back3 {
       proxy_pass http://external-service.com;
    }


    Ещё, можно рассмотреть вариант с условиями, которые смотрят на загловки запроса, ну там referer какой-нибудь или origin, и в зависимости от этого проксируют на тот или иной бэк.
    Ответ написан
  • Почему не работает grep?

    @MadridianFox
    Web-программист, многостаночник
    Потому что паттерн надо в кавычки брать. А ещё в греп надо явно указывать что паттерн это регулярка опцией -E
    Сделайте
    grep - E 'ваш паттерн'
    Ответ написан
    Комментировать
  • Где брать картинки по типу 1000x1000 для верстки?

    @MadridianFox
    Web-программист, многостаночник
    Ответ написан
    Комментировать
  • Зачем использовать Gulp, если можно обойтись плагинами?

    @MadridianFox
    Web-программист, многостаночник
    Серьёзная разработка подразумевает автоматизацию сборки/развёртывания вашего приложения с использованием какой-нибудь ci/cd системы. Это делает неоходимым использование консольных систем сборки, которые в отличие от плагина к редактору:
    1) можно использовать в скриптах
    2) банально меньше весят

    Ну и кроме того, вы используете VSCode, в котором есть этот плагин и он как-то настроен, а ваш коллега может использовать другой редактор, в котором либо нет такого плагина, либо настройки у него другие. А ведь настройки сборки по хорошему должны без проблем передаваться от разработчика к разработчику.
    Ответ написан
    Комментировать
  • Как сделать редирект на вывод из echo?

    @MadridianFox
    Web-программист, многостаночник
    Используйте заголовок редиректа
    header("Location: $link");
    Ответ написан
  • В чем разница kubectl run и kubectl create deployment?

    @MadridianFox
    Web-программист, многостаночник
    команда run запускает один под
    а create deployment создаёт деплоймент, который в свою очередь создаёт под
    Ответ написан
  • Как удалить pull request на удаленном репозитории?

    @MadridianFox
    Web-программист, многостаночник
    Если активность в репозиторий высокая, то, вероятно, уже никак.
    А если никто не успел сделать коммит после вас в главную ветку, то вы можете сделать git reset на коммит до мержа и потом git push --force. Конечно, если вы имеете на это право)
    Ответ написан
  • Редирект с nginx + upstream. Как?

    @MadridianFox
    Web-программист, многостаночник
    У вас основная секция server слушает 443, а новые правила редиректов вы вставили в server, который слушает 80 и предназначен для редиректов http -> https
    Кроме того, в www редиректе вы не меняете хост, т.е. даже если он отработает, то он вызовет бесконечный редирект.
    Ответ написан
    Комментировать
  • Нужен совет: корректна ли связка Nginx - Docker - Nginx (proxy)?

    @MadridianFox
    Web-программист, многостаночник
    В этом нет ничего криминального. Если вам надо именно так - делайте. Если видите способ упростить систему - упрощайте.
    Главное не забыть прокинуть реальный ip и схему в заголовке.

    Кстати, k8s например примерно так и работает. Там 80,443 порт слушает т.н. ингрес - обычно тот же nginx, конфиг которого задаётся через yml файл. И вот он принимает все запросы и в зависимости от настроек проксирует их на бэкэнды, в том числе и на внутренние nginx'ы.
    Ответ написан
    Комментировать
  • Как с помощью ps найти основной дочерний процесс?

    @MadridianFox
    Web-программист, многостаночник
    Обычно, проверка на то что программа уже запущена, делается через создание т.н. lock файла.
    Вам нужно в начале работы скрипта проверить - создан ли файл.. ну например /var/www/site/manage.lock
    если да, то завершить программу т.к. уже работает другой процесс,
    если нет - создать такой файл, продолжить выполнение программы, а перед завершением удалить файл.

    Если говорить об определении дочерних процессов, то у ps богатые возможности по фильтрации и форматированию вывода. Получить PID дочерних процессов зная PID родительского можно вот так:
    ps --ppid=1234 -o pid
    Ответ написан
  • Насколько защищена представленная конструкция php?

    @MadridianFox
    Web-программист, многостаночник
    Уязвимость - это когда злоумышленник использует такие варианты параметров, обработку которых разработчик не предусмотрел.
    Варианты обработки параметров - это не только когда мы явно сравниваем переменную с чем-то. Например печально известная функция printf() в языке Си принимает шаблон и значения, которые в него надо ставить, если шаблон может ввести пользователь, то он может подобрать такой шаблон, который выдаст больше чем планировал разработчик.
    printf - потенциально уязвимая функция.
    К потенциально уязвимым функциям можно отнести интерпретирующие функции. Например запрос к БД. Например через одну лишь функцию mysql_query() можно в теории сделать с БД что угодно.
    Это "что угодно" ограничивается тем какой запрос передаётся в функцию. Однако если запрос хоть как-то зависит от того что ввёл пользователь, то разработчику надо предусмотреть любые варианты ввода пользователя так, чтобы запрос продолжал делать то что нужно разработчику, а не пользователю.
    Но не только лишь божественные интерпретирующие функции кроют в себе опасность. Например сохранение некоторой строки в БД и последующий вывод этой строки на страницу тоже может быть опасным, хотя при записи в БД эта строка безопасна. Я говорю о подстановке js кода в страницу, которая будет показана другому человеку.
    Т.е. варианты использования введёного пользователем параметра не ограничиваются той функцией которая непосредственно обрабатывает введённый параметр, но и накапливаются дальше за всё время использования данных, которые когда-то ввёл пользователь.

    К чему я это всё?
    К тому, что для того чтобысказать уязвим ли этот код, нужно оценить как на него повлияют разные варианты введённого логина и пароля или других параметров, которые возможно есть в этом скрипте.
    Я не вижу в этом коде божественных функций, не вижу никакого другого использования введённых параметров кроме их сравнения с литералом. На основании этого могу сказать, что код вполне надёжен.
    Конечно, всегда есть опасность того, что, допустим по историческим причинам оператор === для строк имеет особое поведение, когда в строке есть символ 0xFFAA.
    Ответ написан
    2 комментария
  • Какой дистрибутив Linux выбрать для начинающих?

    @MadridianFox
    Web-программист, многостаночник
    Зависит от того чего вы хотите добиться.
    Говорят, что лучше учиться водить на машине с механической коробкой передач, а не с автоматической. Потому что в обратном случае, с механикой у вас будут проблемы.

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

    Тут на самом деле возможны две точки зрения:
    1) надо ставить любой линукс, и пытаться дить с ним. Решая постоянно возникаюзие проблемы вы научитесь... делать ваши повседневные задачи в линуксе, ну и приобретёте понимание некоторых линуксовых вещей.
    2) надо ставить линукс в виртуальной машине. Это позволит вам проводить более радикальные эксперименты, не боясь угробить сам компьютер. Тут можно уже и не ОС для домохозяек ставить.

    Исходя из этого я бы посоветовал вам arch linux. У этого дистирибутива лучшая вики из всех что я видел. Но домохозяйка его уже не установит. Тут надо самостоятельно размечать диск, настраивать монтирование, настраивать сеть и т.д. Благо в вики всё это по шагам расписано.
    Сначала попробуйте его в виртуальной машине. Несколько раз настройте по разному - с разными графическими окрежениями, с разными сетевыми менеджерами и т.д.
    Сохраняйте получившиеся конфиги. Научитесь их переносить.
    Когда почуствуете что уверенно можете воспроизвести полученный результат на новой виртуалке и когда поймёте что вы в состоянии открыть ютубчик, тогда можно помолиться и ставить уже на реальный компьютер.

    После такой подготовки у вас будут навыки чтобы работать с большинством других дистрибутивов.
    Ответ написан
    Комментировать
  • Как проверить строку на наличие капса?

    @MadridianFox
    Web-программист, многостаночник
    Можно использовать регулярное выражение

    let allCaps = !/[a-zа-я]/.test(myString);
    Ответ написан
    1 комментарий