• Как лучше защищать запросы?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Аутентификация и доработка логики в зависимости от принадлежности пользователя к группе.

    Что то типа этого
    if( User.IsAuthentificated && RoleProvider.IsUserInGroup("ADMIN")){
    // ваш код
    }
    else{
    // доступ запрещен
    }
    Ответ написан
    Комментировать
  • По реализации эффектов на сайте, включая самые современные, библиотека jQuery со сколькими процентов эффектов или аннимаций может справиться?

    Robur
    @Robur
    Знаю больше чем это необходимо
    со 100%. Не слушайте этих яваскрипт-программистов, которые jQuery не осилили и говорят что надо писать все на JavaScript, вы можете быть нормальным востребованным jQuery-программистом и все что хотите писать на jQuery.
    Ответ написан
    2 комментария
  • Как запретить одновременный запуск PHP скрипта?

    @dimuska139
    Backend developer
    Если у тебя в PHP скриптах используются сессии, то с одного браузера ты параллельно скрипты не запустишь, даже из разных вкладок браузера. Скрипты выполняются последовательно. Попробуй через инкогнито или один скрипт дернуть одним браузером, другой - другим.
    Ответ написан
    2 комментария
  • Тестирование программы на Go?

    @DmitriyTitov
    Тест написан корректно. А вот основная программа, по всей видимости, нет. Приведите текст main.go.
    Ну или смотрите в нём строчку №80, как пишет дамп стека выполнения.
    Ответ написан
    Комментировать
  • Как реализовать систему правил к корзине на Laravel?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Я брал за основу компонент Promotion из екоммерс-фреймворка Sylius. Есть доки такие и ещё чуток вот таких.
    Ответ написан
    5 комментариев
  • Как в docker работать с несколькими проектами?

    sergiks
    @sergiks Куратор тега Веб-разработка
    ♬♬
    все на php7.3, mysql 5.7, nginx

    Раз у всех проектов одна среда, достаточно запустить по одному инстансу php-fpm, mysql, nginx и пользоваться ими из всех разрабатываемых проектов.

    «Проект», получается, это папка с файлами, отдельная бд или таблицы на общем сервере MySQL, и прописанный в конфигах nginx
    location /project-42 { root /projects/project-42; ... }
    
    ### или целый блок
    
    server {
      listen 80;
      server_name  project42.dev;
      ... 
    }


    Пожалуй, лучше работать через docker-compose: весь конфиг в одном файле, общая сеть, сервисы друг друга видят, но при этом не светят лишними портами наружу.

    Поднимите сначала один из проектов. Потом разберитесь, как добавить файлы остальных через volumes:
    nginx:
      volumes:
        - "/freelance/projects/Project-0/:/var/www/project0"
        - "/freelance/projects/Project-42/:/var/www/project42"
        # ...
    php-fpm:
      volumes:
        # то же самое сюда


    2) Как проектам дать не localhost:8080, а нормальный урл типа project.dev?

    В конфиге сервиса nginx в docker-compose.yml пропишите вместо 8080:8080:80, а в локальном файле hosts допишите 127.0.0.1 project.dev project42.dev
    Ответ написан
    Комментировать
  • Как записать событие Js в бд?

    @S-a-n-d-r-0
    Как вариант:
    На стороне клиента:
    <div class=“google-ad-container”>someHTML...</div>
    <script>
    var google_ad_click = 0; //объявляете переменную, в которую будете считать клики
    $('.google-ad-container').click(function (event) {
      google_ad_click = google_ad_click + 1; //считаете клики
    });
    
    setInterval(function () {
    	var data = new FormData();
    	data.append('google_ad_click_tratata', google_ad_click);
    	$.ajax({ //отправляем все это дело на сервер
    			type: "POST",
    			url: "АДРЕСОБРАБОТЧИКАВСТАВИТЬСВОЙ.php",
    			data: data,
    			cache: false,
    			processData: false, // NEEDED, DON'T OMIT THIS
    			contentType: false, // NEEDED, DON'T OMIT THIS (requires jQuery 1.6+)
    			dataType: 'json',
    			success: function(respond){ //если ajax отправился нормально
    				google_ad_click = 0; //обнуляем счетчик кликов, чтобы начал считаться снова
    				console.log(JSON.stringify(respond)); //если вы что-то выводите на сервере, вывести это на консоль на клиенте
    			}
    			
    			,error: function(xhr, status, error) //если ajax НЕ отправился нормально
    			{
    				console.log('ajaxError xhr:', xhr); //выводим ошибки в консоль
    				console.log('ajaxError status:', status);
    				console.log('ajaxError error:', error);
    			}
    		});
    }, 30000); //проворачиваем это дело каждые пол минуты
    
    </script>


    На стороне сервера, в файле АДРЕСОБРАБОТЧИКАВСТАВИТЬСВОЙ.php
    if ($_POST['google_ad_click_tratata'])
    if (is_numeric($_POST['google_ad_click_tratata']))
    {
    	$addclicks = $_POST['google_ad_click_tratata'];
    	//А дальше - добавляем значение addclicks к нужному полю в вашей БД
    }

    Код может быть с ошибками, не проверял, но суть такая
    Ответ написан
    3 комментария
  • Как быть с xml префиксами в GO?

    yellow79
    @yellow79
    Senior Software Engineer
    возможно есть какой-то простой лайфак

    Этот лайфхак как раз описан в ссылке на баг. У вас должно быть 2 структуры, одна такая как сейчас, для енкодинга, и другая ровно такая же, но в описании тегов xml разделитель не двоеточие, а пробел для декодинга.
    Ответ написан
    Комментировать
  • Yii2: почему для ActiveRecord отличаются получаемые значения var_dump($ar['test'] ?? 0) и var_dump($ar['test'])?

    @BorisKorobkov
    Web developer
    Потому что не указана таблица БД для этой модели.

    var_dump($ar['test'] ?? 0);

    $ar['test'] ?? 0 эквивалентно isset($ar['test']) ? $ar['test']: 0
    Идет вызов \yii\db\BaseActiveRecord::__isset(), который ловит Exception "The table does not exist" и возвращает false.

    var_dump($ar['test']);

    Идет вызов \yii\db\BaseActiveRecord::__get(), который возвращает значение.
    Ответ написан
    Комментировать
  • Как найти причину не удачного запуска своего docker контейнера?

    kumaxim
    @kumaxim
    Web-программист
    1. Дело в том что после запуска я вижу id вновь созданного контейнера но в списке активных(ps) его нет, зато он висит в списке остановленных(ps -a). Как посмотреть все логи при запуске чтобы понять в чем проблема, ниже привожу мой конфиг, возможно кому то станет сразу ясно в чем проблема.

    Смотри, когда ты запускаешь docker run... твой только что созданный контейнер выполнит команду, указанную после имени образа. Эта команда отработает, сделает какой-то результат и завершиться. Поскольку внитри твоего контейнера больше нет никаких активных процессов, докер остановит твой контейнер за ненадобностью. Именно так он работает. Если хочешь посмотреть логи своего контейнера, тогда смотри мануал по команде docker logs

    2. Мне требуется добавить в свой образ мой скрипт написанный на Python но на git его нет, думаю как грамотней это сделать, добавить скрипт и после сделать просто commit?

    Если тебе надо образ собрать один раз на своей локальной машине, тогда смотри мануал по ADD/COPY. Если же тебе этот образ надо будет собирать на CI-сервере или он понадобится твоим коллегам в дальнейшем - выкладывай на git
    Ответ написан
    Комментировать
  • Как обработать ошибочный ответ API на go?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Думал в структуре Error реализовать интерфейс error и передавать уже непосредственно через error ошибочный ответ.
    Совершенно верно.
    Так
    func(e Error) Error() string{
        return e.Message
    }

    или так
    type Error struct {
      Message     string `json:"message"`
      Description string `json:"description"`
      Error       string `json:"error"`
      error
    }
    Ответ написан
    Комментировать