Задать вопрос
  • Почему if в lambda работает нестандартно?

    @MadridianFox
    Web-программист, многостаночник
    Всё в порядке. Просто в питоне вместо тернарного оператора используется конструкция
    variable = value_1 if test else value_2
    Что аналогично традиционному тернарного оператору
    variable = test ? value_1 : value_2
    Работает это не только в лямбдах, а везде.
    Ответ написан
    Комментировать
  • Как реализовать комментарии на сайте на ООП с помощью MVC?

    @MadridianFox
    Web-программист, многостаночник
    Традиционно комментарии на сайтах относятся к чему-то. Например к статье, новости, файлу и т.д.
    Это значит, что комментарии обычно находятся на странице с комментируемым объектом. Т.е. комментарии это не отдельный раздел и даже не самостоятельная страница, а лишь часть страницы.

    С другой стороны MVC - это даже не шаблон проектирования, а нечто большее - это способ организации структуры программы. Обычно ВСЕЙ программы.

    Таким образом, сделать по MVC только часть сайта... да что там сайта, часть страницы! не очень то возможно, т.к. традиционно одна страница - это один контроллер (Page Controller, который часто выражен методом определённого класса, тоже называемого контроллером).

    Вы всё ещё можете создать модель комментариев. Даже можете красиво отделить представление комментариев. Но вот отдельный контроллер комментариев... это вряд-ли.

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

    @MadridianFox
    Web-программист, многостаночник
    1) Вы пишете что модель сама берёт данные из post. Зачем тогда вам контроллер? Это плохая модель, она зависит от способа передачи данных . Контроллер должен получать данные и передавать их модели. А методы должны называться в соответствии с тем что они делают. Могут называться и одинаково, тут вопрос не к названию, а к содержимому.
    2) то же самое. Модель должна вернуть данные, а уже контроллер дальше положит их куда надо.
    3) подумайте сколько раз за один http-запрос будет создан лишний объект. Если это количество само по себе велико или зависит от обрабатываемых данных (например по одному лишнему объекту на выводимый на странице комментарий пользователя) то это плохо. Если один раз, то зависит от способа создания объекта. Если в конструкторе выполняются ресурсоёмкие операции, то... Это само по себе плохо. Конструктор не должен содержать кода (с некоторыми допущениями)
    4) в третий раз повторяю - модель должна вернуть значение. Прервать выполнение программы она может в одном случае - возникла ошибка, такая что дальше работать бессмысленно. Для этого есть исключения. Контроллер должен поймать исключении и завершить выполнение, а лучше показать сообщение - "ой, возникла ошибка".
    Во всех других случаях модель делает return, управление передаётся контроллеру и уже он, если необходимо делает die().
    Хотя само по себе использование die() чаще всего является костылём.
    Ответ написан
  • Как работает этот js код?

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

    @MadridianFox
    Web-программист, многостаночник
    Веб-компоненты - обобщающее название нескольких технологий, позволяющих создавать собственные элементы с инкапсулированными структурой, стилями и поведением.
    Т.е. вы создаёте один-два файла в какой-нибудь папочке, описываете в них разметку, стили и js-код и вызовом некоторых api-функций говорите браузеру - "вот мой собственный элемент с именем my-element, если встретишь тэг , то наполни его вот этим, стилизуй вот так и по событиям выполняй этот код".
    Технологии, которые это позволяют постепенно появляются в браузерах, но как обычно не полностью и не везде. Нужны полифилы.

    И да, веб-компонент мужского рода)
    Ответ написан
    1 комментарий
  • Как измерить скорость записи одной ячейки Json в базу MongoDb?

    @MadridianFox
    Web-программист, многостаночник
    Можно написать на своём любимом языке программирования простую программу, которая подключается к СУБД, берёт точное время, выполняет сотню тысяч запросов и снова берёт время. Вычитает одно время из другого и делит на количество запросов.
    Ответ написан
    8 комментариев
  • Как надежно записать в изображение скрытую информацию?

    @MadridianFox
    Web-программист, многостаночник
    Никак. Вы сами ответили на свой вопрос - другие сервисы, да и сам человек, который скачал фото, могут делать с этим файлом всё что угодно - резать теги, сжимать, изменять размер и формат.
    Любая скрытая информация может быть потеряна.
    Ответ написан
  • Как клонировать с github без верхней папки/корневой (название репозитория)?

    @MadridianFox
    Web-программист, многостаночник
    Находясь в нужной папке надо клонировать вот так
    git clone <repo> ./
    Ответ написан
    1 комментарий
  • Какой веб-сервер использовать на Маке?

    @MadridianFox
    Web-программист, многостаночник
    Mamp, xampp и прочие это не веб-серверы, а наборы программ с панелью управления. Все они содержат в себе веб-сервер Apache, СУБД MySQL и интерпретатор PHP.
    Поэтому вообще не важно какую именно сборку вы выберете. На начальном этапе между ними нет никакой разницы - включил и работает. Дальше либо придётся копать глубже и вы полюбому будете пробовать разное и даже научитесь работать напрямую с программами. Либо глубже копать не придётся и тогда тем более не важно что вы поставите.
    Ответ написан
    Комментировать
  • Как реализовать удаление элемента, по которому произошел клик?

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

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

    @MadridianFox
    Web-программист, многостаночник
    Не знаю точно, но возможно в Symfony можно как-то изменить расположение папки var. Тогда вы сможете вынести её из volume и она будет внутри контейнера. Хотя там логи... логи удобно иметь снаружи.
    Настраивать volume так чтобы часть его была... не volume.. это как-то противоестественно. Думаю это невозможно.
    И вообще. Если это прод, то нужно при каждом релизе пересобирать образ так, чтобы наружу торчали только данные, а код был частью образа.
    Если это dev, то в чём вообще проблема? Пусть себе тормозит. Кстати, если это dev и вы работаете под windows и docker крутится в виртуалке, то причина тормозов может быть не в volume, а в расшаренно папке виртуалки.
    Ответ написан
  • [MySQL] С любого пользователя видно все базы, что делать?

    @MadridianFox
    Web-программист, многостаночник
    Права забирать. Погуглить команду rewoke.
    Ответ написан
  • Могут ли микросервисы дублировать данные в своих БД?

    @MadridianFox
    Web-программист, многостаночник
    Это называется не микросервисы, а интеграция. Обычное дело в мире корпоративных систем. Главное чтобы кой-какое api было, а дублировать ли инфу в дополнительные подсистемы зависит от требований к быстродействию системы и к актуальности данных.
    Ответ написан
  • Объясните доступным языком что такое PDO и почему лучше использовать его?

    @MadridianFox
    Web-программист, многостаночник
    MуSQL уже отходит на задний план

    Не СУБД MySQL, а расширение php которое даёт функции mysql_*** считается устаревшим.
    PDO и mysqli это такие же расширения, которые дают вам возможность соединяться с базой и выполнять запросы. Они предоставляют более удобное api.
    Ответ написан
  • Как обходиться со свойствами и значениями по умолчанию внутри класса?

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

    Вот, если бы вы делали какие-то преобразования, то тут ещё может быть... Вот представьте, что у вас в объекте есть поле, которое хранит дату. Вы делаете методы setDate(string $date) и getDate(): string, но в поле записываете не строку, а объект DateTime. Вот тогда всё логично, и вопроса - пользоваться ли геттером и сеттером внутри класса не возникает. Хотите работать напрямую с DateTime - работаете с полем. Хотите со строкой - работаете с геттером и сеттером.

    Другой пример - вы делаете только геттер или только сеттер. С помощью только геттера вы делаете ваше поле read only. оно доступно снаружи, но снаружи его никто не изменит. Внутри класса использовать такой геттер не имеет смысла.
    Ответ написан
    4 комментария
  • Как перевести формулу в код?

    @MadridianFox
    Web-программист, многостаночник
    Присмотритесь к формуле (1). Она говорит что интеграл можно представить как сумму членов, которые отличаются друг от друга только индексами переменной y. Причём индексы последовательно увеличиваются.
    Т.е. у нас должен быть цикл, в каждой итерации которого мы вычисляем yn и yn+1 и вычисляем член. Результат прибавляем к некоторой переменной.
    yn это ни что иное как результат вычисления функции f(x) в точке xn
    Получается примерно так:
    sum = 0;
    h = (b-a)/1000;
    for(x = a; x < b; x += h){
      sum += ( f(x) + f(x+h) )/2 * h;
    }
    Ответ написан
    4 комментария
  • Можно ли писать вирусы на python?

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

    @MadridianFox
    Web-программист, многостаночник
    В runserver выполняется команда
    "${YT_DIST}/bin/youtrack.sh" start &
    Амперсанд в конце указывает на то что это надо запустить и отправить в бэкграунд.
    При этом тот факт что в /bin/youtrack.sh передаётся аргумент start говорит о том что это ещё один стартер. Надо посмотреть на его код.
    Ответ написан
    6 комментариев