• Как очистить массив от мусора?

    Не совсем понимаю вашу логику. Вы хотите сказать, что у вас другие правила игры? Если нет, то для проверки того, что 3 одинаковых символа выстроились в линию, совсем не обязательно отталкиваться от последней введённой координаты. На поле 3*3 возможны только 8 линий: 3 вертикальные + 3 горизонтальные + 2 диагональные. После каждого хода можно проверять все линии. Код для этого я написал выше.
  • ВПС, Куда грузить базу данных?

    А там стоит mysql? а там стоит web-сервер + php чтобы мог хоститься phpMyAdmin? а там стоит phpMyAdmin?
    Что значит "загрузить базу данных"? Точнее что вы хотите загрузить? Дамп?
  • Как не заменять переменную в sh скрипте?

    mureevms, может здесь работает тот факт, что содержимое одинарных кавычек это алиас? Т.е. переменная будет интерпретироваться не при чтении .bashrc, а при использовании алиаса.
  • Регистрация на AngularJS 5 используя PHP Yii2 бэкенд. Как проверять состояние регистрации?

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

    Но постойте. Допустим вы сделали SPA с десятью "страницами". Вы хотите при переходе по страницам проверять их доступность. Но делать это надо не при переходе на страницу, а до этого. Надо не давать пользователю кнопок/ссылок, для перехода на старницы.

    У вас где-то в корне приложения должна храниться "карта" возможностей, на основании которой вы будете делать ng-if элементов навигации. Должна быть карта по умолчанию (для гостя) и если гость входит (а это ajax-запрос), то сервер возвращает его персональную карту, на основании его ролей и прав.

    Однако пользователь может хакнуть ваш код и таки открыть недоступную страницу. Что он там увидит? Точнее что надо защитить? Варианта два - либо надо защитить данные, которые показываются на странице, либо надо защитить сервер, от выполнения действий на нём.
    Второе проще. Всякое действие с сервером это ajax запрос, сервер сам посмотрит на сессию и увидит что пользователь не авторизован.
    А первое тоже несложно. Вы же не отдаёте конфиденциальные данные всем подряд, в надежде что они не откроют инспектор?) При переходе на роут, вы так или иначе получаете данные для этой страницы с сервера. Опять же - сервер при отдаче данных может посмотреть в сессию и не отдать данные, если пользователь не авторизован.

    Заметьте - никаких лишних запросов. Никакой нагрузки на сервер. За столько лет.. и придумывать ничего не надо)
  • Какая книга по С++ будет лучше всего для тотального новичка?

    Robot Chappie, Ок, допустим найдётся книга по плюсам, где помимо того что плюсы добавляют к Си, описаны основы. Эта книга будет объяснять такие базовые вещи как условия, циклы, работу с указателями, стэк, работу с памятью. Эмм... первая половина этой книги будет описывать самый настоящий Си.
    Поэтому нет разницы - прочитать две книги - одну по си, а другую по плюсам, или же прочитать одну толстую книгу.
  • Какая книга по С++ будет лучше всего для тотального новичка?

    Толстый Лорри, Дело не в сложности. Утрируя можно сказать что Си является подмножеством плюсов. Поэтому изучение Си перед плюсами ничуть не менее естественно, чем просто постепенное изучение языка.
    И нет, несмотря на то что планка сложности у каждого своя, объективно плюсы сложнее чем Си, как раз потому что плюсы это надмножество над Си. Там больше концептов.
  • Как подобрать примитивный парсер?

    Владимир Куц, (.*) вроде должен сожрать всё до конца строки. Лучше сделать несколько более определённых постановок, типа: %tag - ([\w-_]+), %quoted - ([^"]+) и т.д.
  • Как подобрать примитивный парсер?

    Вова, как раз таки %s менее внятно чем ([\w-_]+), т.к. во втором случае мы явно указываем что хотим найти. Причина по которой вы не хотите использовать регулярки звучит довольно смешно, можно провести аналогию с желанием иметь волшебную кнопку, которая делает вам программу, т.к. писать руками долго и выглядит он сложно.
  • Как вывести содержимое текстового файла средствами html?

    partyzanx,
    $.ajax({
       url: "/data.txt"
       dataType:"text",
       success: function(data){
           $("#data-container").text(data);
       }
    });
  • Как создать свою валидацию по определенным условиям?

    hollanditkzn: *рукалицо*
    В моём ответе слова "три агрумента" являются синими, потому что это ссылка на официальную документацию по этому методу. Если перейти по этой ссылке, то откроется страница, на которой описаны аргументы.
    • Первый - $attrbutes, это строка или массив строк с именами атрибутов модели, к которым применяется проверка
    • Второй - $validator, это либо строка, которая является названием встроенного валидатора или названием метода модели или названием класса валидатора, либо это анонимная функция-валидатор
    • Третий - $options, это любые параметры валидации, которые вы обычно указываете после имени валидатора

    Из этого можно сделать следующий вывод: допустим у нас есть правило
    ["field", "validator", "when"=>function(){}, "on"=>Scenario::INSERT, "validator_param"=>"banana"]
    . Значит используя метод addRule мы его запишем вот так
    $model->addRule("field", "validator", [
        "when"=>function(){},
        "on"=>Scenario::INSERT,
        "validator_param"=>"banana"
    ]);
  • Как создать свою валидацию по определенным условиям?

    hollanditkzn: что значит "Тогда вопрос, как сделать такую проверку?" ?
    Вы написали код. Вылезла ошибка. Ошибка вполне прозрачная - не те аргументы в метод передаёте. Просто посмотрите внимательно на то как метод принимает аргументы и передайте их правильно.
  • Как правильно прописать событие hover, чтобы не конфликтовали классы?

    triowinner: Конкретное решение я уже показал. Через $(this) вы можете управлять как самим элементом, вызывавшим событие, так и его дочерними/родительскими элементами.
    То что "вроде" - это лишь указание на то, что есть и другой способ добраться до этого элемента, и если вам вдруг не понравиться $(this), то вы теперь знаете в каком направлении копать - искать документацию по объекту события, который передаётся как первый аргумент в обработчик.
  • Корректно ли реализована DI?

    kot-samolet: нет не так, а вот так:
    public function __construct(){
        $db = ServiceLocator::get("database");
    }

    В зависимости от того, какой объект вы засунете в ServiceLocator в bootstrap скрипте, такой объект и будет возвращаться. Например вы можете на боевом сайте засунуть туда класс MysqlDB, а для того чтобы прогонять тесты - засунуть туда MockDB.

    непонятно если у меня по этому классу будут разбросаны обращения к методам БД что толку если ServiceLocator вернёт мне объект другого класса?


    Ну так нужно засовывать класс нужного интерфейса. Зачем вам DI если вы не знаете зачем вам может понадобиться заменить один класс на другой?

    По поводу протаскивания зависимостей через конструктор - это всего лишь другой способ, который тоже является DI. Чаще всё же используется ServiceLocator.
  • Как сделать чтобы в настройках пользователь мог сохранять свои настройки индивидуально?

    CODE GEEK: Я не предлагаю какой-то вариант, я лишь отметил высокую контрастность между опытом разработчика и требованиям к надёжности кода который он, т.е. вы пишете. Т.к. в коде фигурирует биткоин-кошелёк, то требования к надёжности такого кода выше, чем требования к надёжности какого-нибудь блога или сайта-визитки.
    Ну а сделать этот код безопаснее можно используя prepared statements.
    Ещё стоит отметить, что указывать строковый ключ массива без кавычек крайне нежелательно и в последней версии php это вроде уже выпилили или как минимум сделали depreceted.
  • Yii2 Как сделать правильный запрос?

    Артем: with() используется для жадной загрузки, а joinWith() - для того чтобы сделать join в запросе не указывая конкретные столбцы и по умолчанию делает жадную загрузку, которую можно отключить, кроме того можно указать тип джоина. innerJoinWith() это тот же joinWith() для которого уже указан тип джоина.
  • Как сделать чтобы в настройках пользователь мог сохранять свои настройки индивидуально?

    Когда человек пишет код связанный с биткоином, с кошельками и не знает что в SQL есть where и что данные из post нельзя просто так вставлять в запрос... да.. проект взлетит)
  • Yii2 Как сделать правильный запрос?

    Вы бы хоть структуру таблиц привели, код моделей, сообщение об ошибке.
    Ну и описание того что вы хотите получить, словами или запросом.

    Например совсем не ясно что такое prcid. Может это просто поле, хотя joinWith работает с названием метода...
  • Yii2 Как сделать правильный запрос?

    Нет. joinWith() использует данные о связи, которые записаны в соответствующем методе модели. Достаточно просто указать название связи.