• Как перевести Traefik(v2) dashboard на субдомен?

    glebovgin
    @glebovgin
    Full Stack Web Developer
    Вот мой блок labels для дашборда:
    labels:
          - "traefik.enable=true"
          - "traefik.http.routers.traefik.entrypoints=http"
          - "traefik.http.routers.traefik.rule=Host(`tf.domain.com`)"
          - "traefik.http.middlewares.auth.basicauth.users=login:hashed_password"
          - "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
          - "traefik.http.routers.traefik.middlewares=auth,traefik-https-redirect"
          - "traefik.http.routers.traefik-https.entrypoints=https"
          - "traefik.http.routers.traefik-https.rule=Host(`tf.domain.com`)"
          - "traefik.http.routers.traefik-https.tls=true"
          - "traefik.http.routers.traefik-https.tls.certresolver=mytlschallenge"
          - "traefik.http.routers.traefik-https.tls.domains[0].main=tf.domain.com"
          - "traefik.http.routers.traefik-https.service=api@internal"


    То есть
    - слушаем 80 порт для нужного домена
    - зпрашиваем basic auth для входа ()
    - редиректим на 443 порт
    - случаем 443 порт для нужного домена
    - указываем выписывание tls-сертификата, настройки прописать можно в блок command (пример ниже)
    command:
          // ..... другие директивы
          - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
          - "--certificatesresolvers.mytlschallenge.acme.email=youremail@domain.com"
          - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"


    папку letsencrypt надо не забыть смонтировать в volumes:
    volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - "./letsencrypt:/letsencrypt"
    Ответ написан
    Комментировать
  • Кто может объяснить суть задачи Три попарных максимума?

    hint000
    @hint000
    у админа три руки
    Решение существует, когда
    max(x, y) = max(y, z) = max(x, z),
    И
    {если min (x, y, z) < max(x, y, z), то должно быть min (x, y, z) > 1}
    .
    Доказательство оставим в качестве домашнего упражнения. ;)

    P.S. моё условие почти соответствует тому, что вывел dmshar, только записано в чуть более общей форме. Я не пользовался ограничением x ≤ y ≤ z.
    Ответ написан
    5 комментариев
  • Кто может объяснить суть задачи Три попарных максимума?

    @dmshar
    Если действительно
    четкого условия нет. Можно только предположить, что x ≤ y ≤ z . Ограничений по равенствам нет.

    то рассуждаем следующим образом:
    X максимум из a и b, Для определенности, возьмем либо a < b либо a=b (раз равенства допускаются).
    Т.е. уже имеем b=Х. Для a должно выполняться условие a<=b.
    Из условий Y=max(a,c), Z=max(b,c) и условия a<=b следует, что с>=b. Тогда с=Y, с=Z.

    Следовательно, условию удовлетворяют только такие пары, у которых либо все три заданных числа X,Y,Z равны между собой, либо X < Y=Z и тогда b=Х, с=Y=Z, a - произвольное число, меньшее либо равное b.

    Алгоритм свелся к тому, что вы проверяете, выполняются-ли указанные условия и если одно из них выполняется, непосредственно получаете свои а,b и с без всякого подбора.
    Ответ написан
    1 комментарий
  • Хорошая книга по Теории вероятностей?

    @raspier
    Java Developer
    Одна из лучших книг, сборник задач с решениями
    PS: Мне очень повезло у него учиться)
    Ответ написан
    Комментировать
  • Можно ли использовать одну django библиотеку внутри другой?

    tumbler
    @tumbler Куратор тега Django
    бекенд-разработчик на python
    Как по мне, так использование django-оберток над js-либами это издевательство над фронтендом. Они хорошо работают, пока фронтенд не нужен, а как только возникают такие задачи как у топикстартера, сразу начинаются проблемы. Потому что мухи должны быть отдельно от котлет.

    По теме, надо смотреть в исходники django_grapejs, возможно там можно сконфиругировать ссылку на подключаемую библиотеку через местный settings или через наследование.
    Ответ написан
    Комментировать
  • Что больше будет нагружать сервер: AJAX или SOCKET'ы?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Зависит от того:
    1. Сколько одновременно пользователей онлайн в среднем.
    2. Какие данные (общие или для каждого пользователя свои) планируется доставлять.
    Например, если общие данные сохранить в текстовик (json) и отдавать статикой, то AJAX будет работать не хуже сокетов (тем более, что вероятность того, что все 1000 будут одновременно в онлайне - крайне мала).
    Всегда нужно отдавать только "флаг" (на хеш-запрос по последним полученным данным), если новых данных нет.

    Здесь AJAX (и 1000 пользователей всего!) - не создаст никакой нагрузки!
    Ответ написан
    Комментировать
  • Какой путь Front-end-а?

    yudinikita
    @yudinikita
    Инженер-программист из России
    2 комментария
  • Как выглядят сервера для мобильных приложений?

    sentike
    @sentike
    Программист, разработчик игр, студент
    Для загрузки изображений, видео и т.д используется http запрос с методом post. При формировании запроса указываются заголовки, тело запроса и т.д, что обычно делается браузером при отправки формы. Тут Google в помощь.

    Есть вариант №2, где общение с клиент-сервером идет на сыром tcp / udp и оболочками над ними. Ход действий:
    0. Открыть соединение с сервером
    1. Открыть и прочитать файл
    2. Отправить пакеты с данными(action, data, hash и т.д по своему усмотрения)
    3. Принять пакет и его прочитать. Обработать action, извлечь данные, проверить валидность.
    4. Сохранить фото или любое другое действие.
    Ответ написан
    2 комментария
  • Как правильно в Laravel сделать авторизацию по токену для API?

    @mr_ko
    Javascript, Node.js. React.js, Vue.js, Wordpress
    Чтобы не изобретать велосипеды, можно использовать готовое решение Artem0071 https://github.com/tymondesigns/jwt-auth
    Ответ написан
    8 комментариев
  • SPA и REST API - как грамотно построить аутентификацию?

    liveunit
    @liveunit
    Думаю jwt аутентефикации хватит с головой.
    Вот тут написано хорошо обо всех токенах и как они работают.
    https://auth0.com/blog/refresh-tokens-what-are-the...
    Ответ написан
    2 комментария
  • Как написать валидирующий прокси сервис для клиентов?

    ololopishpishrealne
    @ololopishpishrealne
    one|line|mega|pipe|ninja
    Nasxi/ModSecurity
    Ответ написан
    Комментировать
  • Как написать валидирующий прокси сервис для клиентов?

    @RidgeA
    в чем, собственно, сложность?

    ----запрос---> сервис валидации <---- запрос валидный ----> бэкэнд
            ^                            |
            |                  запрос не валидный
            |                            |
            ----- 400 -----------
    Ответ написан
  • Как добавить условие в Where yii2?

    metallix
    @metallix
    Backend - developer
    Может так?
    $news = self::find()
              ->where(['status' => self::STATUS_ENABLE, 'datePublished' => '<2016-04-04'])->all();

    или так -
    $news = self::find()
              ->where(['status' => self::STATUS_ENABLE'])->andWhere('datePublished < :datePublished',[':datePublished' => '2016-04-04'])->all();
    Ответ написан
    2 комментария
  • Какой выбрать способ для организации хуков в плагине для WordPress?

    PavelK
    @PavelK
    Хуки это часть Вордпресса на котором он базируется,
    почему Вы хотите явно вынести использование их, как будто это что-то не родное?
    По-моему лучше всего их использовать там, где они нужны, а не выносить в отдельный класс и не придумывать лишних проблем, где их нет.
    Ответ написан
    Комментировать
  • Список документов для обоснования платежей кучи мелких заказов зарубежного фриланса?

    IvanTheCrazy
    @IvanTheCrazy
    1) В месяц планируется много разных заказчиков, биржи нет. Своего сайта пока тоже, сижу со странички фейсбука. Куда можно запостить договор-оферту дабы избежать подписей адской кучи документов.
    1.1) Можно ли как-то в бриф приатачить оферту?

    Оферту на сайт, в бриф ссылку на нее. Делая то-то и то-то, вы принимаете условия оферты, размещенной по адресу. (В соответствии с п. 3 ст. 434 и п. 3 ст. 438 Гражданского кодекса РФ - вашему заказчику это не важно, а налоговой понятно). Можно даже тупо сделать одну страницу без дизайна, просто с текстом оферты.

    2) Если у меня будет офрета, значит ли что больше никакие подписи будут вообще не нужны при общении с заказчиками?

    Смотря что пропишете в оферте и как будете принимать платежи, можно и без них отлично обойтись :)

    4) Стоки. Хочу также продавать некоторые баннеры по стоковому принципу. В данном случае продажа ведь является лишь передачей прав. Нужны ли особые документы для обоснования платежей?

    У стоков как правило есть все необходимые документы + валютный контроль многих банков уже знаком со стоками и сами скажут что им нужно. У меня оплата с upwork - я прикладываю акт (в pdf, мне его через поддержку дадут) + скриншот страницы "Transaction history"

    5) Также читал, что некоторые тупо делают скан пэйпала с приходами и это относят в налоговую. В каких ситуациях это возможно?

    У корпоративного пейпела есть раздел бух документов. Но на него с paypal юрлиц вы денег получить не сможете. Вообще вам должно быть достаточно этого скрина + оферты пейпел + вашей оферты

    6) Нельзя ли иметь некий буферный элект. кошелек, на который переводить все маленькие заказы, а потом одним махом с него переводить на р/с, тем самым имея лишь одно обоснование платежа? Как это организовать, примерно?

    Можно, тот же пейпел. Это у нас называется агентский договор. Правда все платежи в отчетность (КУДиР) вы должны заносить именно по дате и сумме поступления на пейпел (соответственно если поступление в USD - заносить по курсу ЦБ на дату поступления), так что записей в любом случае будет много.

    P.S. Перевод на банковский счет (swift) - не ваш выбор, неадекватно дорог и мучителен для большого кол-ва маленьких транзакций.
    Ответ написан
    3 комментария
  • Почему просиходит системная ошибка при создании класса наследованного из абстракного?

    kumaxim
    @kumaxim
    Web-программист
    Сперва обратите внимание на то, какое у Вас базовое пространство имен: какое-то Ваше или системное?
    Первое что меня смущает
    $this->_registry['settings'] = new Tools\Settings();

    Измени на
    $this->_registry['settings'] = new \Tools\Settings();

    *я добавил ведущий слэш перед Tools. Таким образом ты говоршь интерпритатору: "Класс Settings, который мне нужен, лежит в подпространстве Tools глобального пространства имен"

    И второе, напрмер, твой Tools\Settings
    namespace Vendor\Tools;
    
    use Vendor\Core\Loader\AbstractLoader;
    
    class Settings extends AbstractLoader 
    {
           //// ....
    }


    Поменяй на следующее
    namespace Vendor\Tools;
    
    class Settings extends \Vendor\Core\Loader\AbstractLoader 
    {
           //// ....
    }


    Когда ты наследуешь, именно наследуюешь, нет никакого смысла подключать сторонний namespace через use. Лучше прописать полный путь к базовому классу в заголовке(лично мое мнение). Другое дело, когда ты из стороннего namespace вызываешь классы, причем и не один, тогда да - стоит добавить через use.

    UPD:
    Увидел твою ошибку. Ты в use прописываешь путь до класса, например use Vendor\Core\Loader\AbstractLoader; Это неправильно! В use нужно указывать путь до namespace. Ты пишешь так:
    namespace Vendor\Tools;
    
    use Vendor\Core\Loader\AbstractLoader;
    
    class Settings extends AbstractLoader 
    { ///... }


    В твоем случае корректно будет так
    namespace Vendor\Tools;
    
    use Vendor\Core\Loader;
    
    class Settings extends AbstractLoader { ... }

    Используя use Vendor\Core\Loader говоришь интерпритатору - импортируй мне все классы из пространства имен Vendor\Core\Loader, для того чтобы я мог использовать их здесь. В твоем варианте use Vendor\Core\Loader\AbstractLoader ты говоришь - "Импортируй мне вложенные в класс AbstractLoader классы". Я вообще сомневаюсь, что из абстрактного класса через use можно что-то импортировать. Скорей всего тут у тебя и ругается на 500 ошибку.
    Ответ написан
    2 комментария
  • Почему просиходит системная ошибка при создании класса наследованного из абстракного?

    nazarpc
    @nazarpc
    Open Source enthusiast
    Посмотрите логи веб-сервера, там конкретно написано в каком файле, на какой строчке и в чём именно ошибка.
    Ответ написан
    1 комментарий