Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

Vadim Stepanenko

  • 0
    вклад
  • 151
    вопрос
  • 6
    ответов
  • 17%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как лучше поступать в такие моменты по bem?

    SeaInside
    Максим Морев @SeaInside
    10 лет пилю все эти штуки
    Эта разметка абсолютно правильная в двух случаях:
    1) Ваши `close` и `card` действительно нигде не переиспользуются;
    2) Объём стилей блока `some-class` остаётся адекватным для восприятия.

    Соответственно, вам нужен новый блок в двух случаях: либо он переиспользуется, либо для разделения кода для простоты восприятия.

    Возьмём разметку посложнее (не надо в ней искать какого-то смысла, просто от фонаря что-то набрал для иллюстрации):
    <div class="block">
      <!-- Header -->
      <div class="block__header">
        <h2 class="block__title">Title</h2>
        <div class="block__actions">
          <button type="button" class="block__action block__action--edit">
            <span class="block__action-icon"></span>
          </button>
        </div>
      </div>
      <!-- Content -->
      <div class="block__content">
        <p>...</p>
      </div>
      <!-- Footer -->
      <div class="block__footer">
        <div class="block__about">
          <div class="block__author"></div>
          <div class="block__date"></div>
        </div>
        <div class="block__awards">
          <div class="block__award">
            <div class="block__award-inner"></div>
            <div class="block__award-tooltip">
              <div class="block__award-tooltip-content"></div>
              <button type="button" class="block__award-tooltip-close"></button>
            </div>
          </div>
        </div>
      </div>
    </div>


    Положим, что весь контент этого блока уникальный и никак не переиспользуется.
    Объём стилей `block` при такой структуре неизбежно станет некомфортным для восприятия, строк на 200-300.

    В таком случае хорошо создать внутренний блок (или несколько) просто для того, чтобы размазать сложность.
    `block-header`, `block-footer` или даже `block-footer-award`.

    Самое главное здесь организовать файловую структуру / конфигурационный файл / чем вы там ещё собираете таким образом, чтобы было очевидно, что `block-footer` - это не самостоятельный блок, а внутренний блок `block`, нужный только для упрощения восприятия, и он не может / не должен использоваться в отрыве от него (в этом случае у него не должно быть в названии общего префикса с `block`, чтобы не создавать путаницу)

    * И не забывать о том, что даже для таких внутренних блоков действуют те же самые правила, что и для других - вся внешняя геометрия задаётся через элементы.
    Ответ написан более года назад
    8 комментариев
    8 комментариев
  • Есть ли возможность в scss применять стили в зависимости от родительского аттрибута?

    delphinpro
    Сергей delphinpro @delphinpro Куратор тега Sass
    frontend developer
    Ну так и пишите

    .element {
       color: var(--color);
    
       body[theme="dark"] & {
          --color: white;
       }
    
       body[theme="light"] & {
          --color: #333333;
       }
    }
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Есть ли подобная структура в js?

    Aetae
    Aetae @Aetae
    Тлен
    Нет. Тип значения которое уже было возвращено всегда конкретен. Либо это строка, либо это объект.
    Можно возвращать объект с методом toString который будет возвращать нужной строку при приведении к строке, но это не равносильно возвращению самой строки.
    const ROUTES = {
      blog: {
        art: 'page-art',
        toString() {
          return 'section-blog'
        }
      }
    }
    ROUTES.blog.art // page-art
    ROUTES.blog // object
    'text: ' + ROUTES.blog // text: section-blog

    Также можно попытаться накостылять магию с прототипом String, но это только в качестве развлечения, на проде за такое руки оторвут.)
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Запрос для получения уникальных значений и их количества?

    Akina @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT categoryId, COUNT(*) AS `count`
    FROM table
    GROUP BY categoryId
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как можно сократить этот код js?

    WblCHA
    WbICHA @WblCHA
    const index = params?.index ?? section?.index ?? 0;
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Как в докер контейнере mysql записывать медленные запросы в папке проекта?

    rozhnev
    Slava Rozhnev @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    Перед запуском докера создайте пустой файл и дайте полные права (конечно slow.log а не slow.cfg)
    touch ./resources/docker/logs/slow.log
    chown 777 ./resources/docker/logs/slow.log


    - "./resources/docker/logs/slow.log:/var/log/mysql/mysql-slow.log"


    А лучше пробросьте в контейнер всю папку logs

    volumes:
          - "./resources/docker/config/my.cfg:/etc/mysql/conf.d/config-file.cnf"
          - "./resources/docker/logs/mysql/:/var/log/mysql/"
          - "./resources/schema/schema.sql:/docker-entrypoint-initdb.d/1-schema.sql"
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Удалять из бд лайки или ставить isActive = 0?

    Fockker
    Ипатьев @Fockker
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это пустые страхи.
    Никакой "фрагментации" "диска"в таблице из двух числовых полей (то есть с фиксированным размером записи) не будет. БД прекрасно сама повторно использует ячейки удалённых записей.
    Поэтому, как правильно сказал Akina, мягкое удаление для лайков делать бессмысленно
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Удалять из бд лайки или ставить isActive = 0?

    HemulGM
    Hemul GM @HemulGM
    Delphi Developer, сис. админ
    INSERT OR UPDATE
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Удалять из бд лайки или ставить isActive = 0?

    iiiBird
    iBird Rose @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    используй INSERT ... ON DUPLICATE KEY UPDATE https://dev.mysql.com/doc/refman/8.0/en/insert-on-...
    по user_id тобишь
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как правильно составить sql запрос с условием?

    Akina @Akina
    Сетевой и системный админ, SQL-программист.
    Схематично:
    SELECT orders.column,
           COALESCE(books.column, deposits.column) AS column
    FROM orders 
    LEFT JOIN books ON orders.type = 'book' AND orders.id = books.order_id
    LEFT JOIN deposits ON orders.type = 'deposit' AND orders.id = deposits.order_id
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Как узнать, сколько памяти "ест" сайт?

    hottabxp
    Сергей Карбивничий @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    shift+esc:
    613ce558eb0d7339907268.png
    Ответ написан более года назад
    5 комментариев
    5 комментариев
  • Как можно оптимизировать вычисления в компоненте react?

    Alexandroppolus
    Alexandroppolus @Alexandroppolus
    кодир
    Обычно items делается в виде объекта, и тогда activeItem = items[activeItemId], это выполняется очень быстро.
    Но если надо именно массив, то можно сделать так:
    const activeItem = useMemo(() => items.find((item) => item.id === activeItemId), [items, activeItemId]);
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Когда нужно использовать reselect?

    mbelskiy
    Макс @mbelskiy
    Software Developer
    Реселект нужен в тех случаях, когда в профайлере видно, что компонент перерисовывается, не смотря на то что данные в компонент не изменились.

    Примеры того, когда это может быть: функция внутри useSelector создает и возвращает новый объект/массив. Функция (state) => state.settings[CONST_SECTION].list таковой не является
    Ответ написан более года назад
    4 комментария
    4 комментария
  • Существует ли апи для определения одежды по фото?

    gbg
    Армянское Радио @gbg
    Любые ответы на любые вопросы
    Даже когда эта идея прозвучала в популярном на то время сериале Теория Большого Взрыва, компания по сбору средств, на такой продукт собрала всего лишь 10 000 долларов что катастрофически мало.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Можно ли работать на жаре macbook air m1?

    Drno @Drno
    Машина может работать при 35гр? а телефон? вот Вам ответ.
    Если ноут перегреется - сам и вырубится, не парьтесь

    Конечно нельзя сидеть под прямым солнцем с ЛЮБОЙ техникой(исключения техника с защитой IP 66 и выше). А в беседке - вполне ок, я сижу мне норм)
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Можно ли работать на жаре macbook air m1?

    fedorez
    Denis Fedorets @fedorez
    Хатуль мадан
    оставить бук (любой) под прямыми солнечными лучами вряд ли будет разумным решением, и вряд ли даже такому качественному агрегату как макбук в такой ситуации будет хорошо (равно как и вряд ли будет удобно программисту, как минимум дисплей какой бы классный не был на солнце не очень хорошо читаем, цвета итп)

    просто на открытом воздухе - нет проблем. я на своей Air М1 сейчас работаю в беседке во дворе или под навесом у моря - жара за 30, полет нормальный, бук не перегревается
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Можно ли работать на жаре macbook air m1?

    vabka
    Василий Банников @vabka
    Токсичный шарпист
    Ну на солнце лучше не сидеть. А в помещении при 30 градусах вроде ок.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Какое окружение вы используете для разработки php?

    Barmunk @Barmunk
    Из того, без чего жить не могу
    1. PhpStorm + sublime
    2. Navicat - С этим старичком уже больше 15 лет вместе.
    3. Gitkraken \ git-fork
    4. Insomnia
    5. Vagrant

    С докером не локальной машине у меня всегда не складывается. Любое окружение, чуть сложнее запуска 4 контейнеров, сразу же прилетает довесок в виде баш скриптов между ними. Меня это всегда смущает и я перестаю в этом копаться.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Какое окружение вы используете для разработки php?

    Дмитрий Свиридов @dimuska139
    Backend developer
    Использую следующее:
    1. PhpStorm (IDE). Чтобы он работал быстро, проекты следует держать на SSD.
    2. DBeaver для просмотра содержимого и структуры БД (сами изменения в БД делаю через миграции)
    3. Postman для того, чтобы дёргать эндпоинты, смотреть ответы и заголовки
    4. Docker в связке с docker-compose

    В качестве СУБД обычно использую PostgreSQL, для кеша - Redis. Но это вообще много от чего зависит уже.
    Ответ написан более года назад
    2 комментария
    2 комментария
  • Какое окружение вы используете для разработки php?

    New_Horizons
    Илья @New_Horizons
    Бред:
    Насчёт xampp эо да, тут вопрос идентичности окружения с продом. Вряд-ли то, с чем вы работаете, запускается в проде по виндой.

    Я штормом пользуюсь, он гораздо функциональные. Но очень тяжёлый и значительно проигрывает саблайму, например в скорости запуска
    Ответ написан более года назад
    3 комментария
    3 комментария
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • Следующие →
Самые активные сегодня
  • sasmoney
    sasmoney
    • 9 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 5 ответов
    • 0 вопросов
  • Drno
    • 5 ответов
    • 0 вопросов
  • nedosekinstanislav
    Stanislav
    • 5 ответов
    • 0 вопросов
  • GNUBack
    • 5 ответов
    • 0 вопросов
  • yarkov
    Алексей Ярков
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации