• Как правильно получать данные с сервера в SPA (React + Redux)?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    что делать в этом случае?

    Вам должно быть виднее. Если это данные которые могли измениться, то очевидно, что лучше подтянуть свежие. Если что-то, что меняется редко, то можно проверить наличие в хранилище.
    Еще можно использовать socket соединение и реализовать на сервере логику, чтобы он сам посылал на клиент обновления по мере их появления.
    Ответ написан
    Комментировать
  • Как сделать регистрацию/авторизацию на React?

    @Biocoder
    Начните с API, советую использовать JWT (для Laravel есть https://github.com/tymondesigns/jwt-auth )
    Далее делаете формы и шлете запросы через fetch/axios
    Сессию можно хранить в Redux/MobX

    Если хотите могу выдернуть из текущего проекта реализацию и выложить на гитхаб как пример
    Ответ написан
    2 комментария
  • Как передать состояние из Redux Store в ReactDOM.render?

    @ilyapashkov02
    Frontend Developer
    Не надо боятся лишних коннектов, если это решит вашу проблему. А вообще можно просто сделать <Load loading={store.getState().yourProperty}/>
    Ответ написан
    2 комментария
  • Как теряется контекст в классовых компонентах, и как помогает bind?

    @KnightForce
    Если используешь метод внутри класса - то не нужно.
    class Div extends Component {
      constructor(props) {
        super(props);
        this.props=props;
      }
    
      showAlert(value) {
          alert(value);
      }
    
      render() {
          this.showAlert(1);
        return (
          <div>
    
          </div>
        );
      }
    }


    Все будет норм.
    Но если ты будешь передавать какой-то метод в обработчик или в дочерний компонент, то произойдет следующее:
    this - текущий контекст - класс в котором объявлен.
    Далее button (это хоть и простой jsx, но все же компонент) - внутри себя вызывает this.имяМетода - this уже сменился.
    Вот пример:
    class Div extends Component {
      constructor(props) {
        super(props);
        this.props=props;
      }
    
      showEvent(e) {
          alert(e);
      }
    
      render() {
          this.showAlert(1);
        return (
          <div>
              <button onClick={this.showEvent}></button>
          </div>
        );
      }
    }


    this - определяется в момент вызова.
    Чтобы все было ок, есть следующие пути привязки контекста:
    1)var self = this - сохранение в переменную.
    2)apply - вызов метода с явной передачей контекста.
    3)bind(some) - привязка контекста. Говорит функции что использовать в качестве контекста, потом изменить контекст нельзя.
    4)()=>{} - стрелочная функция, которая в отличие от function(){} - определяет контекст не в момент вызова, а в момент объявления.

    Используется фиксированный контекст и метод вызывается используя то что нужно, а не пытается вызваться от другого объекта.
    Ответ написан
    4 комментария
  • Нужны ли внешние ключи в БД при разработке на laravel?

    mcmraak
    @mcmraak
    php+sql+js+bicycle+crutches
    [ Внимание, это моё мнение не претендующее на best practices ] Одна из прелестей Laravel, это довольно сильное абстрагирование от базы данных благодаря чудесному уровню абстракции QueryBuilder и Eloquent ORM, сегодня вы используете SQLite а завтра MySQL, а послезавтра решите использовать PostgreSQL и т.д. при этом вам не придётся ничего особо переделывать в приложении (при использовании моделей или QB без голых запросов).
    По этому желательно не возлагать никакой логики на базу данных, все отношения (а так-же акцессоры и мутаторы, ассоциации) описываются в моделях и позволяют контролировать целостность данных средствами Laravel а не базы данных.
    Ответ написан
    4 комментария
  • Нужны ли внешние ключи в БД при разработке на laravel?

    muhammad_97
    @muhammad_97
    PHP-разработчик
    Да, нужно указывать.

    не станет ли это проблемой в будущем

    Наоборот, они помогут избежать проблем. Можно, конечно, и вручную все это прописывать, но зачем?

    Если все-таки нужно указывать внешние ключи в БД, помогите определиться какие действия ставить на ON DELETE или ON UPDATE, например для таблицы users и posts.

    Зависит от типа связи.

    Пример:

    Профиль - настройки пользователя (предположим, что они хранятся в отдельной таблице). Без пользователя настройки не имеют смысла, поэтому их также нужно удалить при удалении юзера.

    Публикации в блоге - пользователь. Здесь уже на выбор:

    1. Можно запретить удаление пользователя, если у него есть хотя бы один пост
    2. Удалить все посты юзера вместе с аккаунтом
    Ответ написан
    5 комментариев
  • Как правильно спроектировать базу данных: один пост - много изображений?

    bingo347
    @bingo347
    Crazy on performance...
    Первый вариант - связь один ко многим
    Второй - многие ко многим

    Рассуждаем: один пост имеет много картинок, ок
    Задаем себе вопрос: а одна картинка может быть только в одном посте или все таки может так оказаться, что в нескольких?

    Ответив на этот вопрос Вы сможете выбрать тип связи
    Ответ написан
    Комментировать
  • Как правильно работать с базой данных yii2?

    @engune
    Разработчик сайтов и мобильных приложений
    Если данные будут использоваться на всех серверах - то можно заполнение также добавить в миграцию.
    Если это временные данные - использовать как дамп из INSERT.
    Ответ написан
    Комментировать
  • Как правильно настроить права на веб-сервере Ubuntu?

    intelligence
    @intelligence
    Если за nginx стоит апач, то гуглить в сторону apache2-mpm-itk, если php-fpm, то запускать его от имени нужного юзера (server в данном случае). Соответсвенно, если нужны будут изолированные сайты, то апач\нгинкс запускается от уникального юзера для каждого сайта. И с фтп проблем не будет.
    Ответ написан
    9 комментариев
  • Небольшое количество BAD секторов на диске повод сдать его по гарантии?

    Melkij
    @Melkij
    PostgreSQL DBA, рассмотрю предложения о работе
    Отчёт программы от производителя - основание для гарантийного обращения. Помнится, SeaTools называется.

    Любой имеющийся bad-блок, нарушающий работу диска (например, сектор никак не читается, таймаут истекает, или же считывается не то, что было записано), т.е. remap диском выполнен не был - да, основание для гарантийного обращения. СЦ при этом может выполнить remap и вернуть диск обратно как есть.
    Показатели SMART - нет, не являются. Будут являться гарантийными только если так решит официальный софт или документация от производителя.
    Ответ написан
    8 комментариев
  • Небольшое количество BAD секторов на диске повод сдать его по гарантии?

    Jump
    @Jump
    Системный администратор со стажем.
    Да.

    По поводу очистки диска -
    1)Удаляете всю информацию с диска.
    2)Записываете на весь диск мусорную информацию - фильмы, музыка
    Можете использовать для этих целей программы для создания криптодисков, вроде truecrypt.
    3)Удаляете мусорную информацию.
    Ответ написан
    Комментировать
  • Как правильно перенести сайт на новый сервер?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    1. Обеспечьте общую внутреннюю сеть между 1 и 2 сервером.
    2. Поставьте nginx на 1 сервер, указав в качестве бэкенда ваше веб-приложение на 127.0.0.1.
    3. Разверните копию nginx, файлов сайта и структуру БД на втором сервере.
    4. Убедитесь, что с первого сервера есть связь к вашему веб-приложению (ему самому, а не nginx) через внутреннюю сеть.
    5. Однажды ночью, проведите короткую профилактику, остановив первый сайт.
    6. Перенесите данные БД с первого сервера на второй.
    7. Настройте на первом сервере у nginx в качестве бэкенда второй сервер.
    8. Смените DNS с первого сервера на второй.

    Теперь ваше веб-приложение работает на втором сервере, а при подключении к первому, пользователь получит результат работы второго сервера.

    Первый сервер можно оставить в эфире до тех пор, пока к нему не прекратятся соединения.

    --
    P.S. Чтобы не морочиться с внутренними сетями (хотя это несложно сегодняшними средствами), вот альтернатива первому пункту:
    Откройте в фаерволе на втором сервере возможность первому серверу подключиться прямиком к веб-приложению по его порту. В 7 пункте, nginx можно будет настроить на публичный адрес и порт приложения. Учтите, что трафик между двумя серверами в этом случае шифроваться не будет. Рисков в связи с этим не очень много, но, при желании, соседи или ЦОД смогут "подслушивать" ваш трафик между серверами.
    Ответ написан
    5 комментариев
  • Как правильно перенести сайт на новый сервер?

    @spotifi
    Делаешь поддомен третьего уровня. Настраиваешь на нем новый сайт. В том числе и переносишь БД.
    Все проверяешь.
    Должно работать как при заходе от имени основного домена так и от имени временного домена третьего уровня.

    Быстрая операция из двух пунктов:

    1. Отключаешь запись в БД на старом сайте (отключаешь комментарии или сайт целиком - надпись "Ведутся умные работы, подождите немного"). Переносишь БД на новый сайт еще раз.

    2. Включаешь на старом сайте переадресацию на новый поддомен - т.н. http переадресация "временно см. по такому-то адресу"

    После чего меняешь DNS на новый сайт. Пользователи некоторое время будут заходить на старый, но их будет автоматически перекидывать на новый.

    Когда на старый сайт более заходить не будут, убиваешь его. Обычно это дня 3.

    P.S:

    Обслуживание поддомен убиваешь не сразу. Можешь сразу сделать 301 редирект с поддомена на основной сайт.
    Ответ написан
    2 комментария
  • Как правильно перенести сайт на новый сервер?

    VELIK505
    @VELIK505
    Руководитель департамента profitcentr.com
    Если сайт не сильно серьёзный и бд небольшая и не хочется сильно париться. То:
    1. Создаем базу на новом сервере
    2. Заливаем движок на новый сервер
    3. Отрубаем сайт на тех работы и быстренько делаем перенос базы через ssh перед этим сделав удалённое соединение. и быстренько меняем конфиг (подключение к бд) на удалённое соединение через айпи xxx.xxx.xx.xx:3306
    4. Открываем сайт
    5. На новом сервачке только конфиг где будет идти локальное подключение к бд.
    6. Файлы аватары музыку или чё там ещё у вас льёться на старом сервачке в движке дописываете чтобы заливались ассинхронно на оба сервака!
    7. Через денька 3 наверочку сносим старый сайт.
    Ответ написан
    3 комментария
  • Как разместить Wordpress в подкаталоге (NGINX)?

    @TraiDeR
    Была похожая проблема со скачиванием index.php. Вопрос решился на удивление просто - очистка кэша браузера.
    Ответ написан
    Комментировать
  • Как правильно разрабатывать web проект на примере yii2?

    @LAV45
    Как раз на форуме Yii обсуждали данную тему.
    yiiframework.ru/forum/viewtopic.php?f=4&t=29291
    Я там приводил пример выгрузки кода на test и prod сервера.
    Dmytro Karpovych , думаю тебе будет нитересна это обсуждение.
    Ответ написан
    Комментировать
  • Как правильно разрабатывать web проект на примере yii2?

    У меня так, проект на локальном сервере (git), далее на vps дев версия(git) и продакшн,
    при заливки правок, отправляю всё на битбакет с локального сервера, далее через phing сливаю правки с битбакета в дев версию, тестирую если всё ок, то через ссш посредством rsync синхронизирую дев версию и продакшн. В итоге для синхронизации локальной версии с продакшн всего 2 команды, не учитывая команды гита.
    На всех трех версиях, также разное окружение, но настроено всё таким образом что конфиги цепляются в зависимости от того где расположен проект, если локальная версия то одни, на дев и продакшн соответственно другие
    Ответ написан
    Комментировать