• Регистрация на AngularJS 5 используя PHP Yii2 бэкенд. Как проверять состояние регистрации?

    @MadridianFox
    Web-программист, многостаночник
    Как обычно - сервер создаёт сессию, и её номер сохраняет в куки. А вы при каждом запросе к серверу эти куки передаёте, и сервер видит содержимое сессии, если там пусто - то не авторизован, а если там лежит то, что вы туда положили при авторизации - то, блин, авторизован.

    Т.е. ваш случай ничем не отличается от классического web-приложения.
    Ответ написан
    3 комментария
  • Какая книга по С++ будет лучше всего для тотального новичка?

    @MadridianFox
    Web-программист, многостаночник
    Тотальному новичку надо учить Си и только потом переходить на плюсы.
    Ответ написан
  • По какому принципу определяется вектор движения курсора?

    @MadridianFox
    Web-программист, многостаночник
    Элементарно: при каждом событии движения мыши берём координаты, вычитаем из них запомненные координаты от предыдущего события и получаем вектор движения. Т.е. если сначала были координаты {50;50}, а стали {49;60}, то мышка сдвинулась в сторону {-1;10}, т.е. вниз и чуть чуть слево.
    Можно сглаживать вектор движения учитывая координаты не двух измерений, а например, последних 4-5.

    UPD: посмотрел примеры. Тут можно не привязываться к вектору движения мыши, ведь логика завязана на то - переходим ли мы с предыдущего пункта на следующий или со следующего на предыдущий.
    Т.е. при наведении мыши на пункт определяем индекс элемента на который навели. Запоминаем. Если мышь переместилась на другой пункт, то берём его индекс и сравниваем с запомненным. Если больше - то одна анимация, меньше - другая. Если нет запомненного индекса, то можно ещё и третью анимацию прикрутить.
    Ответ написан
    1 комментарий
  • Как подобрать примитивный парсер?

    @MadridianFox
    Web-программист, многостаночник
    Вы хотите регулярные выражения, но не хотите регулярные выражения потому что они сложные.
    Ок, просто не используйте все возможности регулярных выражений.
    Ваш пример можно описать регуляркой вот так: /<([\w-_]+)\s+src="([^"]+)">/
    Ответ написан
  • Как изменить последние коммиты, если уже прошел push?

    @MadridianFox
    Web-программист, многостаночник
    Если прав хватает то можно после того как сделал локальные изменения сделать push --force
    Ответ написан
  • Docker самоубиваемый контейнер (ромео и джульета)?

    @MadridianFox
    Web-программист, многостаночник
    Вообще в системах типа доккера придерживаются обратной стратегии - если что-то упало, то это желательно автоматически поднять заново, а все остальные контейнеры должны быть к этому готовы.
    Однако, можно наверное сделать третий контейнер, единственной задачей которого будет проверять статус первого контейнера и останавливать второй если надо.
    Ответ написан
    Комментировать
  • Как продолжить скачивание после падения?

    @MadridianFox
    Web-программист, многостаночник
    Сделать такую докачку можно на любом языке, т.к. всё что нужно - это добавлять в запрос заголовки и определять размер файла в байтах.

    Докачка файла - это свойство протокола http. Если http-сервер поддерживает докачку, то он отдаёт заголовок Accept-ranges. Скачивая файл вы можете прервать загрузку, а когда решите докачать - отправить запрос на скачивание этого же файла, но уже с заголовокм Range: bytes=<count_loaded_bytes>-, тогда сервер начнёт отдавать файл с указанного места. Погуглите подробнее про эти заголовки.

    Это касается уже готовых http-серверов, которые полностью соответствуют стандарту. В вашем случае, наверное, необходимо отдающий сервер научить отдавать файл по стандарту. Т.е. если поступил запрос на скачивание файла, надо учитывать, что в заголовке может быть передано смещение, ну и отдавать файл начиная с этого смещения.
    Ответ написан
    Комментировать
  • Генетический алгоритм. Как делается жизнь?

    @MadridianFox
    Web-программист, многостаночник
    1) да, рандомно, но теоретически существует такой алгоритм (последовательность команд), которая позволяет организму выживать как можно дольше в этом рандомном мире. Ну например: если сделать последовательность ходов такой, что траектория движения будет покрывать как можно большую площадь, и разбавить её операциями поедания с разных сторон, то шансы организма на выживание гораздо выше чем у организма, который ходит в одну сторону и ожидает пищу только слева.
    2) Да, последовательность команд зациклена. Дело в том, что обучение производит не организм, а... программа, которая отбирает те организмы, которые выжили. Малая часть выбранных и размноженных организмов подвергается мутации, т.е. их последовательность команд изменяется. если изменение удачное, то этот организм, вероятно, попадёт в следующее поколение, и организмов с такой мутацией станет больше. Повторяя это много раз можно найти оптимальный алгоритм поведения бота. Скорее всего он будет коррелировать с алгоритмом генерации мира.
    3) генетическое программирование это... не конкретный алгоритм, это скорее идея, которая имеет обязательные для выполнения шаги, но каждый шаг можно реализовать совершенно различными способами. Условия и команды здесь могут быть какими угодно, это всего лишь описание среды в которой производится оптимизация.
    Ответ написан
    1 комментарий
  • Как вывести содержимое текстового файла средствами html?

    @MadridianFox
    Web-программист, многостаночник
    Можно с помощью js сделать ajax запрос, который получит содержимое файла, ну и вставить полученное содержимое на страницу.
    Ответ написан
    3 комментария
  • Как ограничить окружение ssh сессии?

    @MadridianFox
    Web-программист, многостаночник
    Можно назначить пользователю shell в котором можно настроить какие именно команды может выполнять пользователь
    Ответ написан
  • Как создать свою валидацию по определенным условиям?

    @MadridianFox
    Web-программист, многостаночник
    Просто надо читать документацию. Метод addRule принимает три аргумента
    Ответ написан
  • Чем отличается компонент и модуль 1С Битрикс?

    @MadridianFox
    Web-программист, многостаночник
    Компонент - это отображаемый на странице элемент. Может быть маленький элемент - какая-нибудь маленькая форма, отдельная кнопка. а может быть целая страница или даже раздел сайта, например - комплексный компонент типа форума.
    Модуль - это вроде как плагин системы, который при своей установке копирует свои компоненты и админские страницы в систему, а так же содержит и предоставляет этим (и всем другим тоже если надо) компонентам свои функции и классы.
    Ответ написан
    Комментировать
  • Как выполнить обычный http с помощью php?

    @MadridianFox
    Web-программист, многостаночник
    curl
    Ответ написан
    Комментировать
  • Как правильно прописать событие hover, чтобы не конфликтовали классы?

    @MadridianFox
    Web-программист, многостаночник
    Внутри обработчика событий можно ссылать непосредственно на элемент, который это событие произвёл через $(this). Вроде как-то этот элемент ещё можно достать из объекта события, но я постоянно забываю как)
    $(function() {
    $('a').hover(function() {
      $(this).show();
     },
     function() {
      $(this).hide();
     });
    });
    Ответ написан
  • Не получается с кодом php для бота Telegram?

    @MadridianFox
    Web-программист, многостаночник
    Если вы хотите сделать по настоящему разговаривающего бота, то простым кодированием условий тут не обойтись. Необходимо использовать методы машинного обучения, которые в большинстве своём подразумевают преобразование текста в более машинно-понятный язык, например, N-граммы или тот же soundex..

    Если же это обычный бот - то почему бы не делать как все - команды на латинице со слешем в начале.

    По поводу тех проблем с которыми вы столкнулись: с кирилицей надо работать используя mb_*** функции (можно, конечно, mb_func_overload включить и не париться, но лучше явно использовать мультибайтовые функции).
    Выбор случайного элемента из массива - ну блин, есть функция array_rand(), но и без неё можно было догадаться взять случайное число от нуля и до размера массива и использовать в качестве ключа.
    Ответ написан
    Комментировать
  • Корректно ли реализована DI?

    @MadridianFox
    Web-программист, многостаночник
    В вашем коде нет DI.
    Задача DI - избавиться от жёсткой связи между классами. Т.е. если вы заходите вместо класса DB в классе NeedDB использовать другой класс (ну там тесты гонять или задача такая), то вам придётся редактировать код класса NeedDB. DI - это техника, когда вы "снаружи" определяете какой класс будет использоваться.
    Обычно для этого выделяется какой-нибудь ServiceLocator - объект у которого можно попросить объект нужного класса, и он отдаст его. Более радикальный способ - всегда передавать зависимости через конструктор. Этот способ идеологически более чистый, но и более навязчивый, т.к. вам надо всегда протаскивать зависимости через конструктор.
    Ответ написан
  • Как обратиться к единственному элементу массива не зная его ключа?

    @MadridianFox
    Web-программист, многостаночник
    current($arr) или end($arr)
    Ответ написан
    Комментировать
  • Yii2 Как сделать правильный запрос?

    @MadridianFox
    Web-программист, многостаночник
    объедините оба where() метода в один andWhere()
    Ответ написан
    Комментировать
  • Как правильно поступить при сохранении batchInsert?

    @MadridianFox
    Web-программист, многостаночник
    Ну так они и не будут удаляться. Вы же их не удаляете, только дописываете.
    Я для себя выделил два подхода для таких случаев:

    1) Чисто но сложно. Берём список категорий товара из базы и с помощью array_diff дважды сравниваем его с тем что пришло из формы. Один раз array_diff($cats_from_form, $cats_from_db), второй раз аргументы меняем местами. Эта функция возвращает элементы второго массива, которых нет в первом или как-то так, точно не помню. Таким образом мы получаем список категорий которые пользователь добавил и их надо записать в базу, и список категорий которые пользователь убрал - и их надо удалить. Дальше просто делаем бачИнсерт по одному массиву и делит по другому.

    2) Грязно но быстро. Просто удаляем все категории товара и заново инсертим все категории что пришли из формы.

    На самом деле первый способ имеет смысл применять только если запись связи товара с категорией "ценная" и хранит что-то кроме внешних ключей на эти две таблицы.
    Ответ написан
  • PHP: Почемгу round некорректно округляет до двух знаков?

    @MadridianFox
    Web-программист, многостаночник
    Округляет он правильно. Числа хранит "неправильно". Это связано с тем, как float хранится в памяти. Во многих языках программирования есть такая проблема, что якобы ровное число, будучи float становится больше или меньше целого на один бит.
    Как этого избежать не знаю. Когда сам с этим столкнулся, сделал костыль в виде конвертирования числа в строку, почему-то некоторые строковые функции умеют обходить эту проблему.
    Ответ написан
    Комментировать