• Как в gitlab-ci изменить строку в файле?

    @vitaly_il1
    DevOps Consulting
    Мне кажется, gitlab что-то в синтаксисе не нравится. Я бы попробовал обернуть это в скрипт на bash или perl.
    Типа

    script:
    - inject_password.sh .env.build
    - docker build -f docker/Dockerfile -t ${BASE_IMAGE}:latest .

    Или же можно вообще не редактировать, а подставить пароль через environment variable.
    Ответ написан
    2 комментария
  • Как правильно задать несколько пересекающихся условий RewriteRule в .htaccess?

    Sabin
    @Sabin Автор вопроса
    Похоже, что для RewriteRule нельзя допускать ситуаций, когда сразу 2 условия подходят. В данный момент написал так:
    #Desktop HTTP and WWW
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} !^site\.ru [NC]
    RewriteCond %{HTTP_USER_AGENT} !(?i:samsung|iphone|android) [NC]
    RewriteRule (.*) https://site.ru/$1 [L,R=301]
    
    #Desktop HTTP
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} ^site\.ru [NC]
    RewriteCond %{HTTP_USER_AGENT} !(?i:samsung|iphone|android) [NC]
    RewriteRule (.*) https://site.ru/$1 [L,R=301]
    
    #Desktop HTTPS and WWW
    RewriteCond %{HTTPS} on
    RewriteCond %{HTTP_HOST} !^site\.ru [NC]
    RewriteCond %{HTTP_USER_AGENT} !(?i:samsung|iphone|android) [NC]
    RewriteRule (.*) https://site.ru/$1 [L,R=301]
    
    #mobile WWW
    RewriteCond %{HTTP_HOST} !^site\.ru [NC]
    RewriteCond %{HTTP_USER_AGENT} (?i:samsung|iphone|android) [NC]
    RewriteRule (.*) http://site.ru/$1 [L,R=301]
    Ответ написан
    Комментировать
  • Как через htaccess перенаправить субдомен на одну страницу?

    shambler81
    @shambler81 Куратор тега htaccess
    ну для начала немного теории
    ?- и далее это GET паравметр он не является частью RequestURI а как следствие не виден им вообще, п оэтому редиректы с использованием GET параметров нужно делать по другому, да и в добавок экранируйте спец символы, они на это и есть
    \?
    \/=

    умереть они от этого не умрут точно.
    Третье, вы пытаетесь написать ЧПУ - рекомендую не придумывать велосипед а использовать именно его.
    НУ и давайте разберемся .

    RewriteCond %{HTTP_HOST} ^(www\.|)sub\.(.+) [NC]
    #Если хост www.sub или sub.и далее хотябы один символ, плюс все регистронезависимое
    RewriteRule ^(.*)$ http://sub.php\?action\=weekly\&status\=$1? [L]
    #то выделяем все что там после домена в группу1 и не забывая экранировать спецсимволы подставляем в урл, плюс в конце стоит вопрос, это блядство удалит гет параметры   выставленные до этого ;)


    Если вам нужно использовать GET параметр в этом урле то
    Поймать его можно будет уже через
    RewriteCond %{QUERY_STRING} (^|&)(faq\=13)($|&)
    Собрать его так же в группу ну и подставить ее в рул но уже не $2 а %2
    Ответ написан
    3 комментария
  • Как проверить есть ли часть текста в таблице?

    @hokudJolsbsy
    через if, в смысле через оператор sql if?
    нельзя воспользоваться операторами like или regexp?
    вроде, в sql if работает так:

    SELECT IF(STRCMP("hello","bye") = 0, "YES", "NO");

    (вначале запроса у меня выбирается определенная лишь строка, к примеру та где id=1 и все ее переменные описываются, то есть не надо делать SELECT)

    можете по-точнее объяснить этот кусок? Вас смущает что сначала пишется SELECT?
    Ответ написан
    4 комментария
  • Mikrotik доступ из сети без белого ip?

    fzfx
    @fzfx
    18,5 дм
    172.25.210.76 - это адрес, который не маршрутизируется в интернет. нужно на машине, которая имеет внешний IP-адрес (я так понял, это 77.222.106.147), пробросить нужные вам порты на 172.25.210.76.
    если машина с 77.222.106.147 не ваша - нужно обращаться к тому, чья это машина.
    Ответ написан
    2 комментария
  • Делаем свои логи, как?

    Exploding
    @Exploding
    wtf?
    А сколько стоит разместить рекламу там выше места, куда должны писаться логи?:)

    По сути вопроса:
    Php файл, который все это дело выполняет: загрузка, запросы и т.д. После или перед каждым необходимым для логировагия, действием вносит в переменную сессии данные о том как у него дела и т.д.
    А js по таймауту например в 500ms аякс запросом на этот же php или другой отдельный файл постоянно канючит "ну что там? ну что там?ну что там? ...." Ну и если ответ отличается от "отъе...сь еще не готово“ - помещает его в блок лога))
    Как-то так наверное
    Ответ написан
    6 комментариев
  • На странице есть одинаковые формы(по структуре), но в с разными значениями. Не выходит корректно отправить в ajax!?

    AlexMaxTM
    @AlexMaxTM
    Скорее всего проблема в этом:
    <form id='edit'
    ID на странице должен быть уникальным, а у вас несколько ID c одинаковыми именами.
    Ответ написан
    5 комментариев
  • Предпросмотр картинки перед загрузкой на сервер?

    @antonowano
    Профессиональный самоучка
    Спасибо Doc за примеры. Но вроде ни одна версия IE не поддерживает FileReader.
    Поэтому Я делаю "по старинке" используя PHP, MySQL, AJAX. Выполняю загрузку в фоновом режиме и потом добавляю картинку в DOM. Если картинка в течении одного дня ни к чему не прикрепляется удаляю её автоматически CRON задачей.
    Прошу помощи, мне надо выгрузить картинку под ней сделать поле input для обновления картинки и при выборе другой картинки ее показать, и так выводить все картинки

    Подумайте как можно сделать это проще.
    К примеру:
    У вас есть форма редактирования, в неё Вы выгружаете все фотографии. После каждой фотографии добавляете скрытый input с её id, также рядом делаете элемент для удаления фотографии из DOM вместе со соответствующим скрытым полем. Добавьте пустой input[type=file] для загрузки новых картинок.
    На сервере, когда форма отправится, вы сравниваете idы из базы и полученные из формы, если каких-то нет в форме, то удаляете фотографии с соответствующими id и с сервера.
    А input[type=file] вы можете настроить так чтобы он автоматически загружал ваши фотографии после выбора и размещал их в форме.

    А вообще не бойтесь экспериментировать с формой, возвращаемые данные могут быть массивом.
    Если вы после каждой картинки добавите
    <input type="file" name="form_name[image][id_картинки]">

    вы сможете выстроить именно такую логику, какую Вы описали в вопросе.
    Ответ написан
    5 комментариев
  • Массив из input нужно отправить через ajax, принять, и записать в базу?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    var video = $("input[name='video[]']").val();

    на сколько я понимаю (не суперспец в жс) здесь вы получаете одно значение, не массив значений. Я не уверен какое, первое или последнее, но точно не массив всех значений из инпутов. По идее вообще должно выдавать ошибку, но это можно проверить выведя в консоль что там у вас получилось в video. Соответственно получить все инпуты в массив, а затем уже к каждому в форе применять .val(); В итоге получить массив, как его отправлять уже вопрос вкуса, имхо проще зажсонить и отослать как строку, где и распарсить.
    Ответ написан
    3 комментария
  • БУ сервер, какой лучше купить?

    @ixode
    Доброго времени.

    Посмотрите на ebay английскую контору Bargain Hardware - у них хорошие цены. В РФ, правда, не шлют, но через посредников или друзей можно притащить (я через Финляндию притаскивал).

    Есть еще немецкая контора dedynamix-solutions-de (ищите на ebay.de. Дел с ними не имел, но отзывы только положительные). Они шлют железо в РФ. У них, например,
    HP-Proliant-DL360-G6, 2x 5650 6с, 96GB (12х8GB), P410 стоит 600е (можно попытаться договориться о возврате VAT) + 100е доставка в РФ.
    Ответ написан
    1 комментарий
  • Как правильно использовать AJAX + PHP?

    webinar
    @webinar Куратор тега PHP
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Схема с Ajax такая:
    ajax отправляет запрос на определенный адрес, так скрипт делает нужную выборку и возвращает или готовый кусок html или данные в формате json. При получении ответа от сервера, заменяем старый блок на новый или формируем новый на основе полученного json.
    Например:
    $('select').on('change', function() {
      var chosen = $(this).val(); //берем выбранный результат
      var url = 'http://somemydomain.ru/some-controller/some-action?chosen=' + chosen; //формируем урл
      $.get(url,function(data){ //отправляем ajax запрос
         $('#blockToUpdate').html(data); //вставляем данные пришедшие от сервера
      });
    })

    соответственно на сервере что-то типа этого:
    function actionSomeAction(){
    $chosen = $_GET['chosen'];
    return '<p>Выбран '.$chosen.'</p>';
    }

    Есть еще удобный плагин PJAX:
    https://github.com/defunkt/jquery-pjax
    Ответ написан
    1 комментарий
  • Как правильно использовать AJAX + PHP?

    kpa6uu
    @kpa6uu
    Программист Талибана [Пыхерский Алибаба]
    Если "горит" и нужно сделать быстро - вот простой пример:

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

    Для примера возьмём метку времени.

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

    Логику можно разбить на два экшена.

    P.S: с вебсокетами дела не имел, а вот за лонг_поллинг плюсую, если у вас будет время разобраться - хорошая альтернатива.
    Ответ написан
    1 комментарий
  • Как правильно использовать AJAX + PHP?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Обратную связь реального времени можно сделать через:
    а) WebSocket
    б) Long Polling
    в) Другие морально устаревшие или извращённые решения, вроде "Опроса", "Gif Push", "iframe push", etc...

    Смотреть в гугле, т.к. сюда код не влезет, например: socketo.me/docs/hello-world
    Ответ написан
    4 комментария
  • При выборе одного SELECT другим передать value=0?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    не совсем понятно, что тебе надо сделать

    если у тебя два select с name_a и name_b и при установке name_b тебе надо в name_a установить 0. И делать это на php, тогда самый простой вариант такой:
    if (!empty($_POST['name_b'])) {
       $_POST['name_a'] = 0;
    } elseif (!empty($_POST['name_a'])) {
       $_POST['name_b'] = 0;
    }
    Ответ написан
    7 комментариев
  • Какое железо подобрать для сервера виртуализации(VDS\VPS)?

    gr1mm3r
    @gr1mm3r
    50% ответа в правильном вопросе. Остальное мануал.
    К платформе и процу вопросов нет. Они потянут,
    Но на вашем месте я взял бы не 1 плашку на 32 ГБ, а 2 по 16 в идеале 4 по 16.
    Также: взял бы 4 винта и сделал бы как минимум 10 рейд.
    Ответ написан
    1 комментарий
  • Полная загрузка страницы jQuery?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    От сердца отрываю. Прелоадер нужно поместить сразу после открывающего body, чтобы не проскакивали незагруженные части страницы перед показом прелоадера.
    Всё в одном блоке, чтобы удобней было ставить и удалять его при необходимости и стили, скрипты работали более корректно.
    <!-- preloader -->
        <style type="text/css">
            .preloader_bg { position: fixed; background: rgba(15,15,15,1); width: 100%; height: 100%; top: 0; left: 0; z-index: 200; }
            .preloader_content { position: fixed; left: 50%; top: 50%; transform: translate(-50%,-50%); z-index: 201; font-size: 14px; }
            .preloader_content span { display: block; margin: auto; text-align: center; text-transform: uppercase; color: rgba(225,225,225,1);}
        </style>
        <script type="text/javascript">
        $(function(){
            $('.preloader_bg, .preloader_content').fadeIn(0);
            $(window).load(function(){
                $('.preloader_bg').delay(250).fadeOut(1500);
                $('.preloader_content').delay(250).fadeOut(750);
            });
        });
        </script>
        <div class="preloader_bg"></div>
        <div class="preloader_content">
            <span>Идет загрузка...<br>Подождите...</span>
        </div>
        <noscript>
            <style>
                html, body { opacity: 1 !important; }
                .preloader_bg, .preloader_content { display: none !important; }
            </style>
        </noscript>
        <!-- /preloader -->
    Ответ написан
    4 комментария