• Как использовать DOMDocument в yii2?

    @djay
    Решение:

    1) Либо добавить в импорт DOMDocument,

    use ...
    use DOMDocument;
    
    class Controller ....

    2) Либо при вызове, обращаться как к глобальному классу:

    $dom = new \DOMDocument();
    Ответ написан
    2 комментария
  • Как изменить размер изображения через php?

    @ozornick
    Нельзя. Да и GD в основном поставляется с php (либо легко ставится).
    $old = imageCreateFromJpeg($file);
            // Размеры старой картинки
            $old_w = imageSX($old);
            $old_h = imageSY($old);
        // Новый размер должен быть в пределах 300х300
        // Y X нужно просчитать
            if ($old_w <= 300 || $old_h <= 300) {
                $new = imageCreateTrueColor($image_x, $image_y);
                imageCopyResampled($new, $old, 0, 0, 0, 0, $image_x, Y, X, $old_h);
                header('Content-type: image/jpeg');
                imagejpeg($new, 'newfile.jpg', 75);
                imagedestroy($new);
    }
    Ответ написан
    3 комментария
  • Зачем нужен Gulp?

    @artinnok
    бекенд-программист
    CSS и JS:
    К примеру, у вас имеется большое количество (Х штук) css или js файлов, которое вы подключаете на своих страницах посредством тэгов <link> и <src>.
    При загрузке страницы, браузер клиента будет отправлять X запросов к вашему серверу, а ваш сервер должен будет ответить на X запросов.
    Это:
    1. Тормозит загрузку страницы - будете ждать ответа от сервера
    2. Загружает ваш сервер

    С помощью сборщиков фронтэнда вы можете "склеить" все файлы в один - main.css и main.js, которые будут отдаваться 2 запросами с сервера. Также, вы сможете минифицировать CSS и JS. Под минификацией подразумевается уменьшение размеров файла на диске. Естественно, более легкий файлы будет быстрее прогружаться + минимальное количество запросов к серверу.

    IMG:
    К примеру, у вас имеется Х изображений размером 700 Кбайт. Клиенту надо будет загрузить 700 * X Кбайт. Если вы пропустите свои изображения через Gulp, то вы получите изображения с меньшим размером на диске и такого же качества, т.е. клиенту придется прогрузить примерно (500-600) * X Кбайт.
    Ответ написан
    1 комментарий
  • В двух словах, что такое БЭМ?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    БЭМ - это такая методология вёрстки от Яндекса. Она подразумевает разбиение страниц на отдельные смысловые блоки (комментарий, пост, заголовок, футер, форма, инпут и т.п.). Каждый блок может состоять из других блоков. Основная идея - как можно больше повысить возможность повторного использования уже написанных блоков, для чего используются модификаторы. Плюс, БЭМ подразумевает отказ от каскадных стилей, потому что они препятствуют повторному использованию.
    Например, на странице есть два разных заголовка (например, отдельно в статье, и отдельно во врезке). Как все привыкли делать это? есть код заголовка:
    <h1 class="header">Заголовок</h1>
    И мы ставим эти заголовки в текст статьи и во врезки:
    <article class="article">
        <h1 class="header">Заголовок</h1>
        <p>Текст текст текст</p>
    </article>
    <aside class="incut">
        <h1 class="header">Заголовок</h1>
        <p>Текст текст текст</p>
    </aside>

    Тогда обычно мы используем каскад, чтобы стилизовать заголовок во врезке:
    .header {font-size: 2em; padding-bottom: 1.5em;}
    .incut .header {text-decoration: italic;}

    Всё хорошо, но теперь мы не можем просто перенести эти стили заголовка во врезке в другое место, потому что эти стили привязаны именно ко врезке (классу incut). Плюс, что ещё хуже, если к элементу привязано несколько различных стилей, образующихся подобными каскадными правилами, то перенести такой внешний вид в другое место становится очень трудоёмко. А также, из-за большей специфичности каскадных стилей, их сложнее "перебить" новым стилем.
    БЭМ предлагает отказаться от каскадных стилей и создавать отдельные стили-модификаторы:
    <article class="b-article">
        <h1 class="b-article__header">Заголовок</h1>
        <p>Текст текст текст</p>
    </article>
    <aside class="b-article b-article__incut">
        <h1 class="b-article__header b-article__header_incut">Заголовок</h1>
        <p>Текст текст текст</p>
    </aside>


    .b-article__header {font-size: 2em; padding-bottom: 1.5em;}
    .b-article__header_incut {text-decoration: italic;}


    Чем больше проект, тем выгоднее использование подобной методологии. На маленьких и средних проектах БЭМ может быть избыточен. Хотя вот была статья habrahabr.ru/company/yandex/blog/234905 про использование в маленьких проектах.

    БЭМ может использоваться самостоятельно, вручную создавая все элементы и блоки. Но существует обширный инструментарий для БЭМа, который помогает создавать библиотеку элементов и блоков.

    Ну вот. Получилось не в двух словах, но менее подробно качественно описать БЭМ не получится, имхо.
    Ответ написан
    Комментировать
  • Как правильно работать с PSD макетами под ретиной?

    SmthTo
    @SmthTo Куратор тега Вёрстка
    Все перепёлки мира будут оплакивать мою смерть.
    Retina-макетов не бывает. Retina — не более чем маркетинговое название экранов с высоким разрешением (300+ px на дюйм). Retina могут быть только ресурсы, например, картинки, которые будут иметь в несколько раз большее, чем целевой макет, разрешение, чтобы попасть в пиксельную сетку реального разрешения.

    Вы же верстает не под размеры экрана в физических px, а под viewport с его «виртуальными» px, которые получаются из:
    [физическое разрешение] : [степень масштабирования]

    Чем выше разрешение при равных размерах экрана — тем всё мельче, если масштаб 1:1. Поэтому принято увеличивать масштаб, иначе всё мелкое-мелкое. Таким образом достигается высокая чёткость + адекватные размеры элементов на экране (эффект retina).

    Доп. инфо про правильное масштабирование
    Кстати, если используется масштабирование, то желательно, чтобы масштаб вообще был кратен двум (x2, x4…) для попадания в пиксельную сетку экранов, ибо так получаем меньшее влияния субпиксельного сглаживания, но это задача производителей устройств, а не нас с вами.

    На данный момент в том же iPhone XS используется нечётное масштабирование x3 не потому, что так хорошо, а потому что для нормального масштаба x4 нужно очень сильно увеличить разрешение экрана, а это дорого и не очень энергоэффективно.

    А на OLED-экранах ещё есть богомерзкий PenTile, из-за которого контрастные контуры выглядят пиксельно даже на очень высоком разрешении…

    Так, старый iPhone 6 и iPhone XS имеют одинаковый размер viewport (375px), но реальное разрешение различается очень сильно: 750px против 1125px. Достигается это с помощью масштаба: x2 у iPhone 6 и x3 у iPhone XS.

    Макет должен быть 1:1 к целевому размеру viewport, а не к физическому разрешению экрана. Потому что после всех манипуляций с масштабированием у нас остаётся четкое значение размера viewport, именно на него и надо ориентироваться.

    Наличие или отсутствие retina в этом деле вам совершенно не важно, ибо вы верстает под чёткие размеры viewport, которые могут быть одинаковыми на устройствах с совершенно разными физическими разрешениями: например, ширину viewport 375px (как у iPhone XS) можно достичь на древнем VGA-экране, сжав в нём окно браузера до этих 375px.


    Зачем тогда вообще retina-ресурсы
    Retina-ресурсы по сути бывают только растровыми, ибо векторные картинки, шрифты и вёрстка в целом масштабируются без потери качества. Этого нельзя сказать о всяких JPG'ах, поэтому если вы на iPhone 6 загрузите картинку 375px по ширине — да, она будет равна размеру viewport, но будет выглядеть размыто, потому что физическое разрешение экрана — 750px, а картинка по сути масштабируется в два раза, теряя в визуальном качестве.

    Если у вас в макете текст имеет 15px, то и делайте его 15px. Надеюсь, кстати, что макет вам делал не совсем отбитый дизайнер, который не забыл поставить px вместо pt в макете для текстов. Иначе — либо подгонять на глаз, либо пытаться конвертировать их в px, исходя из выбранном плотности печати в настройках документа макета. Ибо pt — это относительная единица для печати, в web её нет.

    Есть дизайнеры-уникумы, которые делают макеты в два раза больше необходимых размеров, типа, блин, retina x2. А если у меня retina x3 — что мне тогда делать? Или же делают макеты вообще неведомых размеров. Да и в Photoshop'e web-макеты в 2019-м году уже делать не надо, конечно.

    В CSS и HTML есть методы детекции наличия масштаба, чтобы грузить нужный ресурс в зависимости от его степени.
    UPDATE. С макетом полный порядок, тут уже дело в навыках верстки.
    Ответ написан
    6 комментариев
  • Что такое Less и Sass?

    bobrov1989
    @bobrov1989
    Front-end Dev
    мне кажеться вам пока рано заморачиваться вопросом препроцессинга - для начала освойте сам css
    Ответ написан
    Комментировать
  • Почему Веб мастер постоянно негодует когда сажает на joomla страницы на Bootstrap?

    BBoyJuss
    @BBoyJuss
    WordPress, интерфейсы и все вытекающие
    Предположу, что из-за специфичных функций CMS Joomla, сложно генерировать нужный HTML. Этот как с Wordpress функциями типа wp_nav_menu(); , которые генерируют монструозный HTML уже со своими классами, а что бы их заменить на то, что, приносит верстальщик, приходится думать тому, кто натягивает верстку на CMS.
    Вывод: Фронтенд и Бэкенд должны работать сообща, и договариваться о каких то правилах написания кода к тем или иным элементам верстки, ну как минимум Фронтендер должен узнать, на какую CMS посадят его верстку.
    Ответ написан
    Комментировать
  • Почему Веб мастер постоянно негодует когда сажает на joomla страницы на Bootstrap?

    viktorvsk
    @viktorvsk
    Начнем с того, что работа "веб-мастера" должна была остаться в нулевых.

    Ну, а возмущаться может потому, что натягивание верстки - это тупая, никому неинтересная работа.

    Если дизайнер не рисует по сетке - это говорит только о некомпетентности дизайнера вообще и в вебе в частности.

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

    Бутстрап - это, все же, именно самый простой фреймворк, потому что позволяет сделать очень много и у него, наверное, самая лучшая документация. Человек, который "не смог разобраться с бутстрапом" - это печалька. Если человек подходит к html, то знать хотя бы поверхностно bs, foundation, semantic-ui, pure-css - уже должно стать нормой

    Разработчики бутстрапа говорят, что использовать классы row, col- visible- hidden- и т.д. - не рекомендуется. Лучше с помощью препроцессора делать какие-нибудь extend, include, что бы у вас получился класс, например, articles, который включал в себя, помимо прочего .row, и в нем класс article, который содержал бы .col-xs-12 .col-sm-6 .col-sm-4 .col-md-3 .col-lg-2. В таком случае, и разметка чистая и меняется все более централизованно.
    Ответ написан
    Комментировать
  • Как правильно использовать bitrix_sessid_post и check_bitrix_sessid для защиты от ботов?

    @latishew
    1. В форме нужно добавить <?=bitrix_sessid_post()?> - создает скрытое поле со значением равным id сессии текущего пользователя.
    2. В обработчике в начале проверяем
    if(!check_bitrix_sessid()){
        die("ACCESS_DENIED");
    }

    а дальше уже остальные манипуляции с запросом
    Ответ написан
    Комментировать
  • Как правильно править компоненты в 1C bitrix?

    @FreeArcher
    Senior 1С; php, JS Starter
    Нужно копировать шаблон компонента в свой шблон сайта (пространство имен, как называют битриксойды). Смотреть, как там все сделано и при определенном навыке почти все удлаять, оставлять только коркас и что нужно именно вам, чтобы просто не повторять код. так же все подшаблоны и лишние файлы удалять.

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

    Битриксе сложнаая структура, по этому чем меньше файлов вы будите оставлять, тем легче потом будет ориентироваться в ней.
    Ответ написан
    Комментировать
  • Как правильно править компоненты в 1C bitrix?

    @vardoLP
    Ват ю сэй эбаут май мама?!
    Да, нужно копировать шаблон компонента, желательно в шаблон сайта, чтобы не терять и не путаться, и править то что нужно.
    Ответ написан
    Комментировать