• Почему не назначаются разрешения на папку в volume-е?

    rqdkmndh
    @rqdkmndh
    Web-разработчик
    Изменение прав доступа к папке в Dockerfile с помощью RUN chmod не действует на тома (volumes), примонтированные при помощи инструкции volumes в docker-compose.yml. Это связано с тем, что тома подключаются после выполнения всех команд указанных в Dockerfile, и их содержимое не изменяется в процессе построения образа, что означает, что фактические данные тома и права доступа управляются внешним хостом.

    Таким образом, для того чтобы установить нужные права, это должно быть сделано снаружи контейнера, на уровне вашей системы файлов хоста, и эти изменения будут отражены внутри контейнера за счет того, что папка примонтирована. Вы можете также установить права доступа непосредственно на хосте перед тем, как запустить контейнер, используя команды chown и chmod на машине хоста.

    Если же настройка прав доступа должна выполняться внутри контейнера (например, при инициализации или запуске), вы можете использовать команду entrypoint или command в docker-compose.yml для запуска скрипта, который будет устанавливать нужные права доступа при запуске контейнера каждый раз. Пример такого скрипта:
    # Dockerfile
    ...
    
    # Установка прав доступа в скрипте инициализации
    COPY ./set-permissions.sh /usr/local/bin/set-permissions.sh
    RUN chmod +x /usr/local/bin/set-permissions.sh
    
    # Запуск скрипта при старте контейнера
    ENTRYPOINT ["set-permissions.sh"]
    CMD ["apache2-foreground"]

    bash:
    # set-permissions.sh
    #!/bin/bash
    chmod o+w /app/web/uploads
    chmod o+w /app/web/uploads/result
    exec "$@"

    Этот скрипт изменит права на каталоги при каждом запуске контейнера, не зависимо от прав на машине хоста.
    Ответ написан
    Комментировать
  • Создание коротких ссылок, как хранить?

    @spaceatmoon
    Вопрос с чувствительностью регистра решается переводом utf8 в utf8_bin. Также задай для поля флаг unique. Я даже проверил и это действительно работает так как надо.
    https://stackoverflow.com/a/6448861/17078920
    Ответ написан
    2 комментария
  • Какой самый простой для пользователей вариант управления аватаркой?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Вот неплохой редактор: https://github.com/mosch/react-avatar-editor

    Т.е. делаем UI выбора файла, данные передаем в редактор, на выходе получим blob данные из canvas и их уже можно отправлять на back для записи.
    Ответ написан
    3 комментария
  • Select MIN MAX в activerecord yii2?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    $min_price = SomeModel::find()->min('price');
    Если надо просто минимальное значение получать. Зачем оно в select по вопросу не понятно.
    Ответ написан
    1 комментарий
  • Насколько правильно так перезаписывать свойство?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Не надо бессмысленных переприсваиваний, давайте изменим порядок проверок на обратный и будем сразу записывать наиболее приоритетное значение. Какие тут есть варианты:

    Наиболее очевидный.

    Вспоминаем про существование оператора else:

    if (state) {
      this.x = 'c';
    } else if (route) {
      this.x = 'b';
    } else if (prop) {
      this.x = 'a';
    }

    К чёрту условные операторы.

    Складываем данные в массив и ищем в нём подходящее значение:

    this.x = [
      [ state, 'c' ],
      [ route, 'b' ],
      [  prop, 'a' ],
    ].find(n => n[0])?.[1] ?? this.x;

    Тернарная дичь.

    this.x = 
      state ? 'c' :
      route ? 'b' :
      prop  ? 'a' :
              this.x;

    Ещё дичь - switch.

    switch (true) {
      case !!state: this.x = 'c'; break;
      case !!route: this.x = 'b'; break;
      case  !!prop: this.x = 'a'; break;
    }


    mounted () {
      ...

    Вот это непонятный момент - а что, если какое-то из проверяемых значений изменится уже после монтирования экземпляра компонента? Наверное, следует сделать ваш x вычисляемым свойством.
    Ответ написан
    Комментировать
  • Чем отличается oop php от oop javascript?

    Snova_s_vami
    @Snova_s_vami
    JavaScript ES5-8, TypeScript, Angular
    Если коротко, то JS это прототипный язык, само ядро отличается от других ООП языков.
    Те же классы это синтаксический сахар над функциями-конструкторами с их прототипами.
    Нет поддержки интерфейсов, типов, абстрактных классов, отсутствует инкапсуляция по умолчанию без танцов с бубном в виде модулей.
    Если интересует frontend с полноценным ООП, используйте TypeScript. В результате это будет тот же JS, но в процессе работы вы сможете пользоваться всеми прелестями ООП.
    Ответ написан
    5 комментариев
  • Как сделать авторизацию на React и бек на php?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    где сохронять данные когда пользовател авторизовался?

    Гугли Сессии и куки на php.
    Ответ написан
    3 комментария
  • Как проектировать сайт на vue, чтобы его можно было потом сделать приложением?

    kleinmaximus
    @kleinmaximus
    Senior Full-stack Javascript Developer
    Посмотрите https://quasar.dev/ - можно разрабатывать SPA, SSR, PWA, мобильные (через Cordova/Capacitor) и desktop (через Electron) приложения на Vue.
    Ответ написан
    Комментировать
  • При выборе PHP фреймворка стоит ли обращать внимания на тесты скорости?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В текущий момент поддерживаю достаточно большой проект на фалконе, который был написан до меня. Так вот, всем кто там дрочил на сишные либы фалкона, мое вам имхо, основаное на годе поддержки этого проекта:

    1) Оно мегахреново переносится и очень криво становится на свежие системы. Корме того что половина гайдов по установке устарела, но все еще лежит на оф. сайте, гайды сообщества противоречат друг-другу, 90% из них не работает, а про некоторые дистрибутивы можете просто забыть, там они работать просто не будут.

    2) Оно все работает as is и хрен ты посмотришь как работает родная вьюшка/конторллер "внутри", а доки не сказать чтобы хорошо описаны, комьюнити слабенькое, многие вещи сделаны спорно, а поправить или что-то подкрутить дело неблагодарное.

    3) Теперь про самое интересное - скорость работы. Так вот, вся это мутотень про память и прочие плюшки на нормальном сервере не ощущается вообще, то есть переходя определенный предел мощности/вооруженности сервера скорость практически сравнялась с нативом (использовался ларавел и Уии на том же сервере, по замерам - плюс-минус то же по скорости, и чуть больше по памяти (центос, 64гб оперативы, 4 проца, нжинкс, пхп 7.2). Короче выгода была на ветке пхп 5.+, сейчас его актуальность практически равна нулю.

    4) В моем случае по приходу сервер регулярно падал при "серьезной" нагрузке (20-30рпс), в чем я изначально предположил вину старых модулей фалкона, но по факту оказалось что 99% нагрузки вносили ожидания запросов к бд, некоторые из которых были по 7-15 минут, а некоторые куски кода создавали по 80+ запросов с 1 страницы, просто дозапрашивая какие-то данные для вьюшки в цикле. Предыдущий "кудесник" кормил руководство отмазками типа - "мало памяти, железо слабое, все плохо, а то бы летало...". "Магия плохого железа" закончилась после оптимизации запросов и доведения самых тяжелых до 0,5 секунды, а так же выборки всех данных в 1-2 запроса с нормальными джоинами.

    5) Основной вопрос всегда сводится к жадности - взять что-то побыстрее из софта, сэкономив на хостинге/оборудовании. И оно всегда не работает так, по ряду факторов, которые достаточно очевидны.
    Ответ написан
    5 комментариев
  • Как вызвать в Vue.js компонент внутри компонента?

    <template>
      <div>
        <Filter/>
      </div>
    </template>
    
    
    <script>
    import Filter from './Filter'
    
    export default {
      components: {
        Filter,
      },
    }
    </script>
    Ответ написан
    Комментировать
  • Выносить ли вызовы к api в отдельный файл?

    Fragster
    @Fragster
    помогло? отметь решением!
    По жизни это очень облегчает тестирование. Ну и добавление новых провайдеров данных (что бывает редко, но бывает).
    Ответ написан
    Комментировать
  • Зачем тут setTimeout?

    E1ON
    @E1ON
    Programming, Gamedev, VR
    Эмулируют задержку
    Ответ написан
    Комментировать
  • Ajax отправляет пустой post запрос?

    Tim-A-2020
    @Tim-A-2020
    У вас поле data написана не на английском
    Ответ написан
    3 комментария
  • Как создать новый элемент при событии на vue.js?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    В Vue все элементы должны быть заранее предусмотрены и подготовлены на своих местах.
    А дальше просто меняешь значение флага используемого в v-if/v-show или добавляешь в массив использованный в v-for. Никакой работы с элементами - вся работ только с данными.
    Ответ написан
    Комментировать