• Как вытащить файлы из docker?

    vader666
    @vader666
    Посмотреть список работающих контейнеров:
    docker ps
    Подключение к контейнеру:
    docker exec -t -i <container_name> /bin/bash
    Смотрится структура директорий, находится где лежит проект и запоминается его путь. Выходим из контейнера

    Копируем данные из контейнера:
    docker cp <container_name>:<пусть к проекту> <путь куда копируем на текущем сервере>
    Ответ написан
    Комментировать
  • Как сделать выборку из базы с использованием функций и удалить пустые результаты в этих функциях?

    Stalker_RED
    @Stalker_RED
    select u.name, u.phone, sum(o.summa) total, avg(o.summa) average, max(o.created) last_date
    from orders o, `users` u
    where u.id=o.user_id
    group by u.id
    having total > 0


    Я надеюсь, что "Поле created в формате Y-m-d H:i:s" это не строка, а DATETIME.
    Ответ написан
    1 комментарий
  • Есть ли какая-то технология, как оптимизировать запросы к базе данных?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Да. Оптимизатор запросов.
    Ответ написан
    Комментировать
  • Есть ли какая-то технология, как оптимизировать запросы к базе данных?

    Stalker_RED
    @Stalker_RED
    но даже после добавления ключей и запросов по этим ключам всё равно получается, что затрагивается огромное кол-во строк

    этот explain надо еще научиться читать.
    Вот неплохая статья для старта, особо присмотритесь к колонке type
    https://mattweb.ru/moj-blog/bazy-dannykh/item/65-i...

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

    При этом не стоит забывать, что большое кол-во индексов замедляет вставку (и занимает место на дисках, но это скорее мелочь).
    Ответ написан
    Комментировать
  • Почему не открываются сайты сайты на Openserver?

    alio987
    @alio987
    Wordpress Developer
    У меня возникала такая проблема. Оказалось, стояла галочка против автоматического прописывания адресов в hosts:
    5ed89201ad8f6576410261.png
    Решение - убрать галку
    Ответ написан
    2 комментария
  • Зачем сделали так, чтобы print возвращал 1?

    DevMan
    @DevMan
    потому что могли))
    если без шуток, https://stackoverflow.com/a/7095292

    имхо, реального применения не имеет и стоит забыть.
    Ответ написан
    Комментировать
  • Что такое замыкание?

    @HowardRoark
    Full stack developer
    Мне кажется, самый простой пример замыкания - это счетчик.
    var counter = (function () {
    	var current = 0;
    	return function () {
    		current++;
    		return current;
    	}
    })();
    
    console.log(counter()); // 1
    console.log(counter()); // 2

    В данном случае мы не имеем доступ к переменной current и функция гарантированно возвращает каждый раз уникальное значение.
    Если бы это была простая функция, то переменная, содержащая состояние (current), должна была бы находиться вне функции.
    var current = 0;
    var counter = function () {
    	current++;
    	return current;
    }
    
    console.log(counter()); // 1
    current = 5;
    console.log(counter()); // 6

    А это уже нарушает принцип "черного ящика", т.к. переменной можно присвоить другое значение в любом месте.
    Ответ написан
    4 комментария
  • Что такое замыкание?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    В целом ты все верно понял. Почитал я тут ответы, термины, термины, термины...

    Я люблю простые объяснения, буквально на пальцах.

    Вот ты вызвал функцию, в ней создаются переменные локальной области видимости, т.е. доступные только самой функции. Под эти переменные движок JavaScript выделяет память.

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

    В случае с замыканием, ты возвращаешь функцию обратно, т.е. ссылки остаются, поэтому движок не может освободить память, и переменные остаются доступными функции, и более никому. Поэтому эта штука и называется замыкание, т.к. переменные замкнуты на саму функцию.

    Другими словами, чтобы создать замыкание, ты должен вложить функцию в функцию, обратиться из вложенной функции к переменным оборачивающей, и вложенную функцию вернуть наружу. До тех пор, пока возвращенная функция остается в доступе, замыкание существует.

    Один из основных паттернов, для которых применяются замыкания - ограничение доступа к данным, их изоляция (ограничение их области видимости).

    В то же время замыкание выступает в роли автономного атомарного хранилища данных, и, по идее, должно обеспечивать доступ к этим данным, тем или иным способом.

    В ответах есть пример со счетчиком, который наглядно демонстрирует этот принцип.
    Ответ написан
    2 комментария
  • Как избавиться от ошибки "Tainted canvases may not be exported"?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Tainted canvas — канвас, на который выведен рисунок с другого домена. Некоторые операции (например, .toDataURL) с таким канвасом считаются нарушением same origin policy.
    Для открытого локально файла любой другой домен считается нарушением same origin policy, отсюда и ошибка.
    Ответ написан
    Комментировать
  • Что такое end-to-end тестирование?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Понятие еnd-to-end обозначает всего-навсего классификацию тестов по уровню, на котором тестируется система, и, само по себе, ничего не говорит ни о том, какие конкретно должны быть эти тесты, ни о том, какую роль они играют в общей стратегии обеспечения/проверки качества и, также, не является методикой тестирования. (Методика - это совсем другое понятие.)

    Для понимания сути этого понятия хорошо сравнить его с модульным ("нижний" уровень) и интеграционным ("средний") тестированием на каком-нибудь конкретном примере. Давайте рассмотрим некий сферический webshop в вакууме. Предположим, в нем есть 50 классов и для большинства из них написаны модульные тесты. Они проверяют исключительно функционал конкретного модуля (чаще всего, класса), т.е. тот, что зависит только от самого модуля и ни от чего чего более. Потом есть интеграционные тесты. Они проверяют корректность работы отдельных "модулей", если их собрать вместе согласно архитектурe. Например, работает ли правильно "Корзина", состоящая, в свою очередь, из 10 классов (предварительно проверенных модульными тестами), или "Корзина", подключенная к "Вебморде" и т.д. Где-то повыше в этой иерархии есть такие интеграционные тесты, которые проверяют конкретный функционал всей системы. Например, отправляется ли юзеру мейлом копия оплаченного заказа...

    И вот тут начинается самое интересное для понимания того, что такое end-to-end тестирование! Можно представить себе тест, проверяющий, что соответствующий мейл генерируется и сбрасывается SMTP серверу. Если SMTP сервер не рассматривать, как часть разрабатываемой системы, то этот тест вполне можно назвать end-to-end тестом (послали кучку HTTP запросов через "Вебморду" и проверили сброс мыла на SMTP - все зашибись!). Однако, если настройки и эксплуатация SMTP сервера - часть проекта (например, заказана разработка webshop "под ключ"), может оказаться, что это мыло будет отфильтровано каким-нибудь спам-фильтром, превысит лимит почтового ящика пользователя... короче, не дойдет до него. Тогда этот же самый тест уже нельзя считать end-to-end, а нужно бы было написать тест, проверяющий приход мыла в POP3/IMAP ящик. (Опять же, если это действительно нужно! Ибо, в зависимости от конкретных функциональных и нефункциональных требований, архитектор и QA инженер вполне могут найти возможность обеспечить адекватный контроль качества и без такого теста.)

    Таким образом, end-to-end тесты, это такие интеграционные тесты, которые воздействуют на систему через ее самые внешние интерфейсы и проверяют ожидаемую реакцию системы через эти же интерфейсы. Почему именно интеграционные? Потому, что это единственное, что можно о них сказать наверняка: они по определению не могут быть модульными тестами. А все остальное: являются ли они одновременно приемочными, нагрузочными или еще какими - зависит только от общих плана/стратегии тестирования и той роли, которые эти тесты в них играют.
    Ответ написан
    Комментировать
  • Что такое SOLID и как его можно использовать в веб-разработке?

    Есть обалденная статья от 2015 года
    https://blog.bullgare.com/2015/05/%D0%BF%D1%80%D0%...
    Ответ написан
    Комментировать
  • Что такое SOLID и как его можно использовать в веб-разработке?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Весь солид сводится к решению одной проблемы:

    внесли изменения в один кусок кода, и у нас упал другой, никак, на первый взгляд, с первым не связанный

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

    Понимания можно достичь прочитав книжку Роберта Мартина
    Ответ написан
    3 комментария
  • Что такое SOLID и как его можно использовать в веб-разработке?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Если чтоб и ребенок понял - то это такие правила, придуманные взрослыми дядями, если ты им будешь следовать то твой код будет хорошим, ты сможешь создать более сложную систему, меньше наговнякать и соседские пацаны, смотря как их мелкие проекты, вчера бывшие такими клевыми, вдруг превращаются в хаос и обитель зла, будут завидовать, смотря на то как ты лихо продолжаешь ваять свой проект все таким же красивым, и все девчонки захотят с тобой дружить.

    Посмотреть детальнее, что за правила и как их выполнять можно в таком большом количестве мест в интернете что перепечатывание сюда будет порицаемо в любом приличном обществе.

    Один момент - не все принципы одинаково полезны и применимы в веб-разработке, но знать и понимать их все в любом случае на пользу.
    Ответ написан
    4 комментария
  • Как сделать эффект поворота-разворота при скролинге как на сайте?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    0. Делим 360 градусов на N частей. Получаем N направлений.
    1. Делаем по картинке с коробкой для кажного из направлений. Сохраняем по порядку.
    2. Загружаем все картинки (по одной, или спрайт с ними) на клиента.
    3. Выводим на канвас по одной картинке, выбирая их в зависимости от позиции скролла.

    Альтернативно - то же самое, но вместо канваса меняем url у элемента img (именно так у них сделано).
    Альтернативно - сообразить 3D модель коробки, текстуру и загуглить, как делать презентации товаров на Three.js.
    Ответ написан
    4 комментария
  • Как запустить из браузера проект на symfony, под openserver на windows?

    hiimnotwordy
    @hiimnotwordy
    full-stack
    Установка Composer на OpenServer
    https://getcomposer.org/download/

    Проверка версии PHP
    OpenServer > Настройки > Модули


    Проверка расширений
    OpenServer > Дополнительно > Конфигурация > PHP


    Запуск консоли
    OpenServer > Дополнительно > Консоль


    Переход в директорию используемой версии PHP OpenServer
    cd modules/php/PHP-%VERSION%/

    Запуск установки Composer из директории PHP
    php -r "readfile('https://getcomposer.org/installer');" | php


    Ход установки Composer
    All settings correct for using Composer
    Downloading…
    ...


    Проверка версии Composer после установки
    php composer.phar -V

    Создание .bat для глобального вызова
    echo @php "%~dp0composer.phar" %*>composer.bat

    Проверка вызова Composer
    composer -V

    Обновление версии Composer
    php composer.phar self-update
    ____________________________________________________________
    Потом симфония (по-английски, потому что с ней в целом лучше на английском разбираться)

    Starting the console
    OpenServer > Дополнительно > Консоль


    Go to the site location directory
    cd domains

    Create new project by running
    composer create-project symfony/website-skeleton my-project


    Running your Symfony Application
    First, move into your new project and install the server:
    cd my-project
    composer require server --dev


    To start the server, run:
    php bin/console server:run

    Open your browser and navigate to localhost:8000/. If everything is working, you'll see a welcome page.

    Listening on 127.0.0.1:8000
    Document root is D:\OSPanel\domains\symphony4\public
    php -S 127.0.0.1:8000 -t public
    Ответ написан
    Комментировать