Задать вопрос
  • Как сделать парсер?

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

    @MadridianFox
    Web-программист, многостаночник
    Всё просто:
    1) делаете запрос select nazv, dat, [sum] from my_table where ...
    2) в php проходитесь в цикле по полученным строкам, записываете отдельные значения в массивы и переменные
    3) выводите данные из массивов и переменных на страницу
    Ответ написан
    Комментировать
  • Static use methods?

    @MadridianFox
    Web-программист, многостаночник
    Нет. И не понимаю вашего желания. Статический метод отличается от простой функции тем, что при вызове метода видно какому классу он принадлежит. Это хорошо, т.к. у вас несколько классов могут иметь статические методы с одинаковыми названиями, например BlogPostAR::find() и CommentAR::find().

    То же касается и хелперов. Несколько библиотек могут предоставлять свои хелперы для похожих задач.
    А если вам лень набирать имя класса - ок, используёте as:
    use yii\helpers\ArrayHelper as ah;
    ah::toArray($obj);

    но и этого я вам не советую. Через месяц вы забудете что значит ah и придётся отвлекаться на поиск соответствующего use. Или ещё хуже - ваш код будет поддерживать другой человек.
    Гораздо понятнее, когда в коде написано ArrayHelper::toArray(), потому что все кто работает с yii к этому привыкли.
    Ответ написан
    4 комментария
  • Как очистить массив от мусора?

    @MadridianFox
    Web-программист, многостаночник
    Массивы в Си это указатели на область памяти некоторого размера. Точнее просто указатели, размер, хоть где-то и есть (free ведь откуда-то знает сколько памяти освободить), но точно не в указателе.
    Рядом с массивом - за его границами, лежат какие-то данные. Для вас это ничего не значащий мусор, но это могут быть другие переменные, или адреса возврата из функции, если массив лежит на стэке.
    Так вот, ни в коем случае не модифицируйте и не читайте память, которая лежит за границами массива. В лучшем случае, вы наткнётесь на свободный участок, заполненный мусором. В худшем - перезапишете значение другой переменной и создадите себе баг, который без отладчика не найдёте.

    Что касается предметной области:
    char symbols[] = "XO";
    uint8_t winner_index;
    for(uint8_t char_index=0; char_index<2; char_index++){
      for(uint8_t i=0; i<3; i++){
        // rows
        if(a[i][0] == symbols[char_index] && a[i][1] == symbols[char_index] && a[i][2] == symbols[char_index]){
            winner_index = char_index;
            break 2;
        }
        // columns
        if(a[0][i] == symbols[char_index] && a[1][i] == symbols[char_index] && a[2][i] == symbols[char_index]){
            winner_index = char_index;
            break 2;
        }
      }
      // diagonal 1
      if(a[0][0] == symbols[char_index] && a[1][1] == symbols[char_index] && a[2][2] == symbols[char_index]){
          winner_index = char_index;
          break;
      }
      // diagonal 2
      if(a[0][2] == symbols[char_index] && a[1][1] == symbols[char_index] && a[2][0] == symbols[char_index]){
          winner_index = char_index;
          break;
      }
    }
    Ответ написан
    2 комментария
  • Как сделать авто запись в базу?

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

    Если расчёт (в вашем случае расчёт скидки) очень сложный и занимает много времени, а пользователь запрашивает результат много раз, то его надо рассчитывать один раз в какую-то дату. Для этого надо запустить отдельный процесс, который будет работать независимо от того - заходят ли пользователи на сайт или нет. Этот процесс должен периодически проходить по базе и обновлять в ней данные. Это то чего вы хотите.

    Если расчёт не сложный, результат нужен нечасто, то можно считать его на лету. Главное выделить алгоритм, который зависит от начальных данных и прошедшего времени. Ну например - пусть скидка растёт на 1 процент каждый месяц. Тогда алгоритм будет такой: берём дату регистрации, берём текущую, считаем количество прошедших месяцев, проверяем чтобы оно не выходило за какой-то предел (не может же быть скидка больше 100%, да и 100% тоже, этот предел устанавливается бизнесом), ну и добавляем это число к начальной скидке.
    Это то что вам надо.
    Ответ написан
    Комментировать
  • Как не заменять переменную в sh скрипте?

    @MadridianFox
    Web-программист, многостаночник
    поставить обратный слэш перед долларом? не?
    Ответ написан
    3 комментария
  • Регистрация на 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();
     });
    });
    Ответ написан