• Как прикрутить домен при разработке на gulp?

    7GIT
    @7GIT Автор вопроса
    Нашёл еще решение, может кому пригодится
    gilpfile.js - пишем параметр для плагина BrowserSync - tunnel: 'любой_домен'
    Например
    // [gBROWSER] BROWSER_SYNC
    function BROWSER_SYNC(none) {
    	gBROWSER.init({
    		server: { baseDir: DIR_APP, index: '/home.html' },
    		tunnel: 'null',  // ваш сайт в интернете по адресу - null.locl.lt
    		notify: false,
    		ui: false
    	});
    	return none();
    }
    Ответ написан
    Комментировать
  • Вставить переменную в gulpfile.js?

    @alekcena
    Нелинейный наставник
    Для того чтобы вставлять переменную в текст
    1) Использовать кавычки - `${Переменная} текст`
    2) 'текст' + Переменная + 'текст'
    Ответ написан
    4 комментария
  • [MODx]. Evo или Revo?

    @bezalkogoln1y-coder
    Dmi3yy Евгений Борисов Отцы, ну сейчас то ваше мнение поменялось?
    Ну ларавель же, блэйд, композер, артисан, ну как можно от этого отказаться в пользу уже готовых модулей... и самого лучшего шаблонизатора Fenom (нет)
    Зачем использовать специализированные модули, которые писались специально для модх, если теперь можно использовать абсолютно любые. Зашел на packagist.org, нашел, спуллил, написал фасад, написал сниппет, если нужен и все. 10 минут)
    Ответ написан
    2 комментария
  • Как избавиться от артефакта с подключенным шрифтом при загрузке сайта?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    экспериментируй с font-display https://developer.mozilla.org/ru/docs/Web/CSS/@fon...
    swap - как раз и делает что загружает любой шрифт который может, а потом подменяет на нужный
    Ответ написан
    3 комментария
  • Как убрать отступы в хлебных крошках?

    GogElf
    @GogElf
    Хокаге
    Перенос на новую строку в коде inline элементов действует как пробел. Убери все переносы в коде и пропадут отступы.
    Ответ написан
    Комментировать
  • Какую CMS использует habrahabr или какое рабочее окружение у Хабр?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Какую CMS
    Сильно сомневаюсь что хабр/тостер используют готовую цмс, во всяком случае было бы весьма странно узнать что внутри какой-то вордпресс или октобер. Скорее всего что-то на движке типа Симфони или Зенд, точнее вряд ли кто-то скажет, разве что историей развития Хабра поделятся сами разрабы.

    ЗЫ: раньше было так: https://habr.com/ru/post/36692/
    Ответ написан
    1 комментарий
  • Какую cms использует toster.ru?

    Freika
    @Freika
    Senior Ruby on Rails developer
    Ладно, хватит издеваться :) Ruby on Rails это.
    Ответ написан
    3 комментария
  • Почему почтовик mailru блокирует сервера?

    Скорей всего, это означает что у вашего домена плохие репутационные оценки (статья старая, но в целом актуальная). Зарегистрируйтесь в postmaster, это позволит посмотреть что именно не так с рассылками, так же вы можете тегировать различные рассылки чтобы смотреть статистику по разным категориям писем и отдельным рассылкам. Подпишитесь на FBL. Посмотрите в DMARC-репорты, нет ли подозрительного трафика с вашего домена, особенно с валидным DKIM, это может указывать на скомпрометированные эккаунты, ключи DKIM или replay-атаки DKIM. Посмотрите не идет ли спам через формы на сайте. Проверьте по логам вашего сервера, возможно в них тоже можно увидеть рассылки со скомпрометированных эккаунтов.
    Ответ написан
    2 комментария
  • Передать функцию в JSON на PHP?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    чтоб json показывался вот так
    Это не валидный JSON, поэтому да, сериализацию в этот нестандартный формат вам нужно писать самостоятельно.
    Но тогда и десерилизацию этого нестандартного формата тоже нужно будет писать на клиенте.
    Гораздо проще передавать строку и использовать, прости господи, eval.
    Ответ написан
    1 комментарий
  • Как реализовать принцип Mobile First?

    SkiperX
    @SkiperX Куратор тега CSS
    .elem {
     @media (max-width: 551px) {
        ...
        }
     @media (max-width: 991px) {
        ...
        }
        @media (max-width: 1200px) {
        ...
        }
    }

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

    opium
    @opium
    Просто люблю качественно работать
    Глупости не видел ни одного теста подтверждающего эту бредовую теорию
    Ответ написан
    Комментировать
  • Правда ли, что поисковые системы использую имена классов при анализе контента?

    space2pacman
    @space2pacman
    Просто царь.
    Рандомные классы нужны чтобы сделать модульность стилей(стили модулей никак не пересекались с другими модулями и были независимые).

    Поисковые роботы смотрят на классы но они ищут определенные классы чтобы страница выглядела иначе в поисковой выдаче(гуглим html микроразметка, а лучше читаем главу в книге HTML полное руководство)
    Ответ написан
    Комментировать
  • Правда ли, что поисковые системы использую имена классов при анализе контента?

    rundll32
    @rundll32
    Учитывая, что гугл и яндекс сами делают нечитабельные и, возможно, сгенерированные классы и айди, информация выглядит недостоверной.
    Ответ написан
    4 комментария
  • Layout и Bem. Что к чему?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    <div class="layout">
    
      <div class="layout__row header">
        <div class="header__cell">
          Пусть это HEADER
        </div>
      </div>
    
      <div class="layout__row navbar">
        <div class="navbar__cell">
          А это пусть NAVBAR
        </div>
      </div>
    
      <!-- variant 1 -->
      <div class="layout__row">
        <div class="layout__container">
          <main class="layout__col layout__col_main">
            main
          </main>
          <aside class="layout__col layout__col_side">
            side
          </aside>
        </div>
      </div>
    
      <!-- variant 2 -->
      <div class="layout__row">
        <div class="layout__container">
          <main class="layout__main">
            main
          </main>
          <aside class="layout__side">
            side
          </aside>
        </div>
      </div>
    
      <div class="layout__row footer">
        <div class="footer__cell">
          Это FOOTER
        </div>
      </div>
    
    </div>
    Ответ написан
    3 комментария
  • Layout и Bem. Что к чему?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Насколько правильно, если Layout__rowHeader вынести из layout.css в header.css?
    Layout__row Layout__rowHeader


    — Ни на сколько. Если Layout__rowHeader «ближе» по стилизации к Header, его лучше вообще удалить, а стили перенести в header.css

    Вообще, разделить на слои всё, это есть хорошо?


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

    Насколько правильно так верстать: https://codepen.io/git2ss/full/jOMwKWz


    От БЭМа тут только классы «через чёрточку»:
    1) Header__row, Body__row и Footer__row объявлены вне своих блоков (элементы не должны существовать за пределами блока)
    Ответ написан
    2 комментария
  • Актуальность префиксов БЭМ l- b- h- g- js-?

    @ilyarsoftware
    Из истории развития БЭМ https://ru.bem.info/methodology/history/
    2005 год... Классам блоков мы добавили префиксы (b-, c-, g-), чтобы отличать их от внутренних классов...

    Настоящие
    Исторически они появились в переходный период для того, чтобы отличать новый код, написаный по БЭМ, от старого. Со временем мы от них отказались.
    https://ru.bem.info/forum/158/ и https://ru.bem.info/forum/806/

    Соглашение по именованию/Имя блока:
    Иногда к именам блоков могут добавляться различные префиксы.


    Если префиксы решают вашу проблему, значит использовать их надо.

    Дополнительно процитирую заметку "Почему CSS-модули не могут заменить БЭМ":
    Часто слышу, как разработчики говорят «БЭМ не нужен, ведь есть CSS-модули». Это не так.

    Корень этого заблуждения кроется в том, что люди воспринимают БЭМ как CSS-методологию. На самом деле БЭМ это набор универсальных принципов, которые можно применять независимо от используемых технологий, будь то CSS, Sass, HTML, JavaScript или React. БЭМ решает множество задач, в число которых входят именование CSS-классов, подход к разделению интерфейса на независимые части и изоляция стилей для этих независимых частей.

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

    Эволюция выглядит так:
    /* Классический БЭМ с длинными именами классов для обеспечения изоляции */
    
    .shop-cart-button {}
    .shop-cart-button_size_small {}
    .shop-cart-button_size_large {}
    
    
    /* CSS-модули с неограниченной свободой творчества в именах классов */
    
    .button {}
    .small {}
    .large {}
    /* или */
    .button {}
    .is-small {}
    .is-large {}
    /* или */
    .button {}
    .size-small {}
    .size-large {}
    
    
    /* БЭМ и CSS-модули */
    
    .button {}
    .button_size_small {}
    .button_size_large {}

    Сразу отвечу на вопрос «а чем плох пример с классами .button, .small и .large?». Он плох тем, что классы .small и .large сами по себе не несут информации о том, к чему они относятся. Нельзя понять, стилизуют ли они отдельный элемент или описывают состояние существующего элемента. Также такие названия классов рано или поздно снова приведут вас к проблеме уникальности имён. Например, вы пишете стили для модального окна. Вам нужно стилизовать полупрозрачный оверлей поверх страницы и само модальное окно. Оба этих элемента могут быть в двух состояниях: виден или скрыт. Кажется, что класс .visible отлично подходит, но проблема в том, что для оверлея и для окна этот класс должен содержать разные стили. Можно придумать костыль в виде селекторов .overlay.visible и .window.visible, но это именно костыль, потому что вы увеличиваете специфичность. С БЭМом всё просто и без ненужного роста специфичности: .overlay_visible и .window_visible.
    Ответ написан
    Комментировать
  • Как создать структуру постоянных ссылок для произвольных типов записей и таксономий (вложенные термы)?

    7GIT
    @7GIT Автор вопроса
    Решение ниже, но есть проблема (не критично): Ошибка 404 при переходе на страницу таксономии с ярлыком на кириллице, что не так?

    <?php
    /*
    * Plugin Name: MOD
    * Description: DEV
    */
    
    /**
    * Создание произвольного типа записи
    * - register_post_types()
    */
    add_action('init', 'register_post_types', 0);
    function register_post_types()
    {
    // тип записи
        register_post_type('mod_services', array(
            'labels' => array('name' => __('Товары')),
            'public' => true,
            'show_in_menu' => true,
            'show_in_rest' => null,
            'rest_base' => null,
            'hierarchical' => false,
            'supports' => array('title', 'editor', 'thumbnail'),
            'has_archive' => true,
            'rewrite' => array('slug' => 'catalog', 'with_front' => false),
            'query_var' => true,
        ));
    // таксономия
        register_taxonomy('mod_services_catalog', array('mod_services'), array(
            'labels' => array('name' => __('Категории')),
            'public' => true,
            'hierarchical' => true,
            'rewrite' => array('slug' => 'catalog', 'hierarchical' => true, 'with_front' => false),
            'capabilities' => array(),
            'meta_box_cb' => null,
            'show_admin_column' => false,
            'show_in_rest' => null,
            'rest_base' => null,
        ));
    }
    
    /**
    * Изменяем структуру ссылок записей
    * - products_permalink()
    */
    add_filter('post_type_link', 'products_permalink', 1, 2);
    function products_permalink($permalink, $post)
    {
        if (strpos($permalink, 'catalog') === false) return $permalink;
        $terms = get_the_terms($post, 'mod_services_catalog');
        if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) {
            $taxonomy_slug = get_term_parents_list($terms[0]->term_id, 'mod_services_catalog', array(
                'separator' => '/', 'format' => 'slug', 'link' => false, 'inclusive' => true
            ));
            $taxonomy_slug = trim($taxonomy_slug, '/');
        } else {
            $taxonomy_slug = 'categories';
        }
        return str_replace('catalog', 'catalog/' . $taxonomy_slug, $permalink);
    }
    
    /**
    * Создаём новые правила перезаписи +
    * - taxonomy_slug_rewrite()
    */
    add_filter('generate_rewrite_rules', 'taxonomy_slug_rewrite');
    function taxonomy_slug_rewrite($wp_rewrite)
    {
        $rules = array();
        $taxonomies = get_terms(array(
            'taxonomy' => 'mod_services_catalog', 'hide_empty' => false
        ));
        foreach ($taxonomies as $taxonomy) {
            $taxonomy_slug = get_term_parents_list($taxonomy->term_id, 'mod_services_catalog', array(
                'separator' => '/', 'format' => 'slug', 'link' => false, 'inclusive' => true
            ));
            $rules['^catalog/' . $taxonomy_slug . '?$'] = 'index.php?' . $taxonomy->taxonomy . '=' . $taxonomy->slug;
        }
        $rules['^catalog/([^/]*)/?$'] = 'index.php?mod_services_catalog=$matches[1]';
        $rules['^catalog/(.+?)/page/?([0-9]{1,})/?$'] = 'index.php?mod_services_catalog=$matches[1]&paged=$matches[2]';
        $rules['^catalog/(.+?)/([^/]*)/?$'] = 'index.php?mod_services=$matches[2]';
        $wp_rewrite->rules = $rules + $wp_rewrite->rules;
    }
    
    /**
    * Обновляем правила перезаписи при создании/удалении/изменении таксономий
    * - hc_reset_rewrite_rules()
    */
    add_action('created_mod_services_catalog', 'hc_reset_rewrite_rules');
    add_action('delete_mod_services_catalog', 'hc_reset_rewrite_rules');
    add_action('edited_mod_services_catalog', 'hc_reset_rewrite_rules');
    function hc_reset_rewrite_rules()
    {
        flush_rewrite_rules();
    }
    Ответ написан
    Комментировать
  • Какие различия между ERP и CRM системами?

    @nApoBo3
    Границы между системами размыты и даже специалисты часто затрудняются квалифицировать систему. Плюс есть платформы, на базе которых может быть создана система практически любого класса.
    CRM не имеет отношения к сладу, это система управления взаимоотношениями, минимально это карточки клиентов, история звонков и переписки.
    ERP это не бухгалтерия, это управление ресурсами, по большому счету эта система может не делать вообще ничего в виде гуя, а быть сборщиком, анализатором и управляющим для других систем.
    Управление складом это WMS, но это не просто товарные остатки, а именно управление складом как отдельным подразделением, с комплектация заказов, адресным хранением и т.д. и т.п.
    Есть еще огромное множетсво систем других классов.
    Важно понимать от чего вы отталкиваетесь.
    Если вам нужна бухгалтерия, и еще бы хотелось видеть остатки на складе, плюс карточки клиентов. Можно взять бухалтерскую систему и прилипить к ней необходимые модули, или взять модули на той же платформе.
    Если нужна CRM, а бухгалтерия уже есть, и CRM нужна продвинутая, можно сделать обмен с бухгалтерией, плюс прикрутить минимальный модуль складских остатков.
    И т.д.
    В любом случае или писать монстра( сами или заказывать ), можно с нуля, можно на готовой платформе( Navision, SAP, 1С УПП ), или лоскутная автоматизация, когда каждый модуль отдельно, и все они между собой обмениваются данными, это тоже можно сделать на готовой платформе, или купить различные продукты для различных нужд, а дальше их связать между собой через стандартные шлюзы обмена сконфигурированные на заказ.
    Лично я монстров не люблю, и честно говоря недолюбливаю монстроидальные платформы.
    Ответ написан
  • Список языков программирования по категориям?

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

    Раньше вот можно было сказать что есть скриптовые и компилируемые языки, а теперь с этой jit компиляцией даже это...
    Можно было бы сказать что есть строго типизированные и нетипизированные. а теперь есть тайпскрипт поверх js

    Это нормально, что языки сразу несколько категорий занимают.
    Ответ написан
    1 комментарий