Задать вопрос
  • Установить Composer в Docker?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    FROM ubuntu:latest
    
    ENV DEBIAN_FRONTEND=noninteractive
    
    # экранировать переводы строк надо
    RUN apt update && \
        apt install -y nginx curl php && \ 
        curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && \
        composer install # Что инстал та? Нет composer.json
    
    COPY ./hosts/my-application.local.conf /etc/nginx/sites-enabled/my-application.local.conf
    
    WORKDIR /var/www/my-application.local
    VOLUME /var/www/my-application.local
    
    # бесполезная директива
    EXPOSE 80
    
    CMD [ "nginx", "-g", "daemon off;"]
    Ответ написан
    8 комментариев
  • Плагины, как из content_scripts и action JS общаться между собой?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Общение обычно происходит через сервис воркер расширения. Из попап шлете сообщение в воркер, а дальше он пересылает в нужную вкладку. Хотя можно сообщение сразу с попапа в нужную вкладку запульнуть, в попап метод tabs доступен.

    https://chrome-ext.blogspot.com/2014/02/blog-post_...
    Ответ написан
    1 комментарий
  • Как сделать простую анимацию на смену font-family и text-transform?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Свойства font-family и text-transform – дискретные. Они не могут плавно анимироваться.
    В примере анимируются свойства color, font-size, top и transform.
    Время анимации задается здесь transition: all 0.2s ease-in-out;
    Ответ написан
    Комментировать
  • Насколько корректно давать отрицательные значения Margin и Top?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Получили задачу.
    Опишите все возможные варианты её решения.
    Сравните целесообразность.
    Выберите лучшее.

    Если лучшим окажется отрицательный margin, то у вас у самого будет куча аргументов почему этот вариант лучший.
    Ответ написан
    Комментировать
  • Как добавить .webp в React?

    theobroma
    @theobroma
    javascript developer (ReactJS)
    1. Gulp точно не нужен. Мне прям вспомнился 2016 - тогда еще были сборки реакта галпом...
    2. В составе create-react-app используется webpack. Нужно просто расширить конфиг с помощью craco.
    Вот тутор , который сам для себя проверял на работоспособность: How to Optimize Images for Usage in Websites
    Ответ написан
    1 комментарий
  • Можно ли через GET запрос отправлять телло запроса?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Всегда тело запроса ассоциировалось с методом POST

    "ассоциировалось".... Чтобы не было "ассоциаций" надо читать доки.

    Возможно ли отправлять тело запроса

    Достаточно почитать документацию https://www.w3schools.com/tags/ref_httpmethods.asp и станет понятно, что GET-запрос передаёт данные в URL, а не в теле запроса, и есть ограничение на объём передаваемых данных, это очень небольшое значение.
    Ответ написан
  • Как сделать меню иконки на electron?

    @garbagecollected
    А что? эмпирическим путем не догадаться?

    Вот вам три ссылки:

    Все шикарно документировано. С примерами и детальными комментариями.

    У класса Tray есть возможность прослушивать события:
    'click', 'right-click' и 'double-click'.
    Вешайте на эти события сколько угодно менюшек с любыми наборами элементов.

    У класса Tray есть методы:
    • tray.setContextMenu(menu) - устанавливает переданное в параметре menu меню как контекстное меню иконки трея.
    • tray.popUpContextMenu([menu, position]) открывает установленное либо переданное в параметре menu контекстное меню трея. Оба параметра menu и position не обязательны
    • tray.closeContextMenu() закрывает открытое меню трея.



    У класса MenuItem есть параметр icon.
    Пользуйтесь им для размещения иконок в меню.
    Ответ написан
    Комментировать
  • Как вы делаете code-review?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    У code review должна быть цель. В моей практике обычно проекты небольшие и там нет отдельных тестировщиков. Получается, что code review отвечает на три вопроса:

    1. Соответствует ли функционал ТЗ?
    2. Создает ли код проблемы команде?
    3. Есть ли тут какой-то специфичный для проекта опыт, который лучше задокументировать, пока мы еще в контексте?


    Получается что-то такое:

    • До выполнения задачи: проводится анализ задачи, формулируется ТЗ. Бывает, что нужно подключиться и помочь с требованиями, с контекстом, в котором все делается. Чем более подробный анализ мы делаем и чем лучше мы понимаем контекст на этом этапе, тем больше вероятность, что потом весь процесс выполнения задачи пойдет как по маслу и code review будет чистой формальностью в конце.
    • До ревью: линтеры проверяют код на соответствие стилю, на отсутствие синтаксического бреда.
    • Дальше - проверка на соответствие функционала ТЗ. Это защита от глупых ошибок в продакшене, которые коснутся пользователей.
    • Потом - на сответствие принятым соглашениям по коду, если они есть в проекте. Обычно это архитектурные паттерны и что-то про зависимости, смотрим не создает ли код проблем окружающим, а то разные глупости порой случаются. Особенно это важно в коде, который не сам в себе, а затрагивает много чего вокруг. Иногда возникает конфликт интересов, когда что-то явно устарело, и соглашения дополняются чем-то. Чем лучше был анализ в начале, тем меньше вероятность, что тут будет, что обсуждать.
    • Дальше уточняющие вопросы по странным местам, если они есть. Это больше с целью узнать контекст задачи, почему приняты те или иные решения. Происходит передача специфичных для проекта знаний в сторону команды. Возможно там же будут какие-то рекомендации по поводу практик, на что стоит обратить внимание в следующий раз. Это будет передача опыта от команды.


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

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Даже просто посмотри вопросы на тостере год назад и сейчас.
    Последние 5 лет на тостере вопросы становились сложнее, специфичнее. Много вопросов где сам сидишь думаешь.

    А последние 5 месяцев полно треша.

    На вакансию может откликнуться кто угодно. Даже не айтишник. Поэтому из 357 человек до собеседования может быть хорошо если десяток дойдет. А на собеседовании и из них никого не захочется.
    Ответ написан
    Комментировать
  • Есть ли в webstorm такой функционал?

    black1277
    @black1277
    Вольный стрелок
    Да можно. В коде css выделяете название класса и жмете комбинацию shift+F6 - переименовываете класс и жмете подтверждение (кнопка Refactor) - все вхождения этого класса в верстке будут также переименованы.
    Ответ написан
    Комментировать
  • Как открыть ссылку во внешнем приложении?

    black1277
    @black1277
    Вольный стрелок
    Вот тут описан принцип для проводника Windows, делайте аналогично - Как из браузера открыть папку в проводнике Windows
    Ответ написан
    Комментировать
  • If и undefined как решить проблему?

    delphinpro
    @delphinpro
    frontend developer
    Используйте optional chaining
    if(context?.attachments[0].postType) {
        return context.send(`post`);
    }
    Ответ написан
    2 комментария
  • Почему не работает removeEventListener в React?

    Итак, как раз для прокрутки addEventListener и removeEventListener использовать в реакте вполне легально.
    Более того, вы вполне обошли использование рефов используя window, тут все хорошо.
    Но вот на следующих граблях - жизненном цикле вы таки споткнулись.
    Где гарантия, что компонент не перерендерился и функция disableOnwheel осталось той же что и была ?
    Нужно
    1) Вынести disableOnwheel за пределы компонентов, там нет ничего что зависело бы от наличия React
    2) Внимательно прочесть про клинап https://reactjs.org/docs/hooks-effect.html
    Ответ написан
    1 комментарий
  • Как отследить появление autofill-подсказок к полям формы?

    @romaro Автор вопроса
    В общем, я пока вышел из положения способом, который порекомендовал один из ответивших в этом топике:
    const onFocus = (ev: FocusEvent) => {
      (ev.currentTarget as HTMLInputElement)?.removeAttribute('readonly');
    };
    
    <input
      ...
      onFocus={onFocus}
      readOnly
     />


    То есть все мои инпуты по умолчанию readonly. Это позволяет отсекать автоподсказки при загрузке страницы, но не лишаться их при помещении курсора в поле ввода.
    Ответ написан
    Комментировать
  • Почему typescript не видит перегрузку?

    @HealSpirit
    Можно сделать защитников типа:
    interface INavDataBase {
      name: string;
      link: string;
    }
    
    interface INavDataChilds {
      name: string;
      children: INavDataBase[];
    }
    
    type TNavData = INavDataBase | INavDataChilds;
    
    export const navData: TNavData[] = [
      {
        name: "Название меню 1",
        link: "path_to_page",
      },
      {
        name: "Название меню 2",
        children: [
          {
            name: "Название меню 1",
            link: "path_to_page",
          },
          {
            name: "Название меню 2",
            link: "path_to_page",
          },
        ],
      },
    ];
    
    // Здесь можно по разному проверять и hasOwnProperty или "link" in navData
    export const isNavDataBase = (navData: TNavData): navData is INavDataBase =>
      navData.hasOwnProperty("link");
    
    export const isNavDataChilds = (navData: TNavData): navData is INavDataChilds =>
      navData.hasOwnProperty("children");
    
    navData.forEach((data) => {
      if (isNavDataBase(data)) {
        // Здесь будет автокомплит при обращении - data.link
      } else {
        // И здесь, хотя второго защитника мы не использовали - data.children
      }
    });
    Ответ написан
    Комментировать
  • Как изменить имя скачиваемого файла?

    black1277
    @black1277
    Вольный стрелок
    Атрибут download соблюдается только на ресурсах с тем же доменом.
    Ссылка на документацию https://developer.mozilla.org/ru/docs/Web/HTML/Ele...
    Был похожий вопрос

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

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    ({a, b, c} = {a:1, b:2, c:3 }) // вези меня браузер! Ну если внутри ничего нет то попытаемся


    let {a, b, c} = {a:1, b:2, c:3 } // слева переменная, справа значения которые в нее нужно положить. Да Повелитель!
    Ответ написан
    3 комментария
  • Расскажите пожалуйста, что может произойти, если ответвить ветку от родительской с текущим кодом, а потом изменить родительскую ветку?

    delphinpro
    @delphinpro
    frontend developer
    Конфликты могут возникнуть, если в обеих ветках были изменены одинаковые участки кода, и гит не смог самостоятельно определить, какой вариант следует оставить.
    Тогда вы должны будете при слиянии вручную разрешить конфликты (по сути отредактировать конфликтные файлы, в которые гит вам накидает по две версии кода) и застейджить их.
    Ответ написан
    Комментировать
  • Npm init не работает, как исправить?

    black1277
    @black1277
    Вольный стрелок
    Идете в папку C:\Program Files\nodejs\ там находите 4 файла npm.cmd, npm, npx.cmd, npx - открываете их в редакторе и заменяете prefix -g на prefix --location=global Мне это помогло. Если что - вот ссылка на issues в библиотеке npm https://github.com/npm/cli/issues/4980
    Ответ написан
    6 комментариев
  • Как добавлять класс при скороле?

    hahenty
    @hahenty
    ('•')
    Вместо прозрачности ставится что угодно.
    Ответ написан
    Комментировать