• Что за код на 10000 строк?

    vabka
    @vabka
    Токсичный шарпист
    Это минифицированный код.
    Спрашивай у автора, где исходники
    Ответ написан
    Комментировать
  • Почему при верстке из figma получается не так как в ней?

    UnluckySerivelha
    @UnluckySerivelha
    Все хорошо с размерами в фигме.
    Экспортировал всю страницу из фигмы, наложил на верстку, получилось так.
    То есть начать стоит с того, что взят неверный размер контейнера.
    62e54f6e4e2c6573256089.png
    Допустим, возьмем размер шрифта 50px для цены и сверим, получится полное совпадение:
    62e54fc0e247d020133647.png
    Ответ написан
    3 комментария
  • Что означает жёлтый значок с восклицательным знаком на иконке жёсткого диска?

    yakovlev_13
    @yakovlev_13
    Шаманство, экзорцизм и некромантия.
    HDDlife стоит?
    Если так, то
    Цвет щита указывает на текущее значение «здоровья» дисков, а полоска - на процент свободного места.


    Есть подозрение что скоро сдохнет. Проверьте диск Викторией или подобной программой. скрины кидайте сюда.
    Будем смотреть вместе.
    Ответ написан
    7 комментариев
  • Отличия GET от POST?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    UPD: пример ниже приведён для MVC архитектуры. API выдаёт данные, а не страницы. HttpGet - это получение информации от сервера. HttpPost - отправка информации на сервер

    HttpGet и HttpPost это два стандартных типа запроса. Так же есть HttpPut, HttpDelete и куча многих, основные из каких я перечислил ранее.

    Разница между HttpGet и HttpPost в очень простом виде:
    HttpGet - выдача сервером какой-то информации клиенту. Для примера, сервер отдаёт какую-то информацию, допустим, имя и логин пользователя, который зашёл на сайт, для того, что бы отобразить её где-то там. Такая информация передаётся как HttpGet.

    HttpPost - это отправка данных на сервер. Любая. Когда вы регистрируетесь на сайте, ваши данные отправляются как HttpPost. Когда вы делаете изменения личной информации, обновлённые данные отправляются как HttpPost. Т.е. абсолютно любая отправка пакета данных на сервер это HttpPost.

    Стоит отметить, что редирект через url не всегда является httpPost запросом. Если вы просто делаете переадресацию на какую-то страницу и в url передаёте id клиента (Для примера), что бы на странице сведений вывести его данные (Опять же, чисто для примера), это НЕ HttpPost запрос, это просто редирект. Когда вы обращаетесь к серверу с просьбой отрисовать/отрендрить страницу и передаёте туда id клиента, сервер отдаёт HttpGet запрос с разметкой.

    Иными словами, HttpGet запрос, это то, когда сервер должен отрисовать новую разметку. Может выполняться несколько запросов, если вы во время регистрации на сайте отправляете данные, делается сначала HttpPost запрос с отправкой ваших данных, а потом HttpGet, когда у вас рендрится новая страница, на которую вас перекинуло.

    Так же есть HttpPut - аналогия HttpPost, разницы нету почти никакой. Используется когда нужно обновить информацию. Тот же пример HttpDelete - когда нужно удалить информацию. Грубо говоря, запросы с просьбой обновления или удаления какой-то информации серверу
    Ответ написан
  • Где здесь замыкание? О чем вообще речь?

    Vindicar
    @Vindicar
    RTFM!
    В коде создаётся анонимная функция, которая передаётся как параметр в setTimeout().
    Тело этой функции имеет доступ не только к своим параметрам (в данном случае их нет) и к своим локальным переменным, но и к локальным переменным той области видимости, где эта функция объявлена. В нашем случае это user.
    Ответ написан
    Комментировать
  • Как тестировать React веб-приложения?

    @dragonesis
    Вопрос задан не очень верно. React из него, на текущем уровне следует выкинуть.
    Далее ознакомится с пирамидой тестирования. Это уже закроет часть вопросов о том, что к какому типу тестов относится. Только после этого следует переходить к специфики реакта.

    Но если ответить на вопрос, то функции с помощью jest или аналогов.
    Сами компоненты React-Testing-Library + Jest
    Взаимодействие компонентов либо всё теми же React-Testing-Library + Jest, либо чем-то из интеграционных: TestCafe или Cypress или аналогом
    Ну и полные сценарии от открытия страницы до совершения последнего в цепочке целевого действия TestCafe или Cypress или аналогом

    Рекомендуют покрытие Unit тестов не менее 90%, причем после обработки через stryker mutator
    Интеграционные и e2e по критическим сценариям

    Как-то так
    Ответ написан
    Комментировать
  • В чем соль использования хука Reducer кроме того что "мы так привыкли делать в Redux"?

    miraage
    @miraage
    Старый прогер
    Если попробовать поразмышлять..

    useState подразумевает плюс-минус простой стейт, который удобно обновлять через либо setState(newValue), либо через setState(prevState => ({ ...prevState, key: newValue })).

    useReducer для более сложных кейсов, где хранить логику обновления в компоненте становится нецелесообразным и/или будет слишком раздуваться компонент. Или же где логика переиспользуется. Впрочем, то же самое можно сделать и через useState, создав свои хуки, которые под капотом юзают useState/useReducer.

    На выходе, самым логичным на ум приходит более плавная миграция в redux на useReducer.

    Проблема в том, что redux не нужен в 90%+ проектах, и его можно было заменить голым реактом с его инструментами.
    Ответ написан
    3 комментария
  • Что лучше, развернуть фронтенд и бакенд на одном домене или разных субдоменах?

    @romicohen
    Системный Архитектор
    Да воще поф ))

    Единственное что, на одном домене меньше возможной возни с CORS, но это такое себе, несущественное.
    Ответ написан
    2 комментария
  • Что лучше, развернуть фронтенд и бакенд на одном домене или разных субдоменах?

    pprometey
    @pprometey Автор вопроса
    Software & Devops engineer TS/JS/C#/Angular2+/K8s
    Мне понравился такой ответ:
    Будет ли API использоваться другими службами или он предназначен для внешнего интерфейса (например, маркетинговый сайт, мобильное приложение, третье лицо и т. д.).

    Оба способа могут работать, но в этом случае отдельный поддомен разделил бы проблемы.

    Если серверная часть специфична для приложения, я бы оставил ее в основном домене.
    Ответ написан
    Комментировать
  • Upwork всё, куда переходить?

    @vism
    Ребят, в Армению и дальше работаем в апворк, я тут уже 4 дня.
    Очень хорошо относятся, Армяне очень вежливые и культурные.
    99% разговаривает нормально по русски
    Есть яндекс такси, меняют рубли по очень хорошему курсу, можно без визы оставаться на 180 дней.

    Только огромный наплыв русских и кризис арендной недвижки в Ереване.
    Квартира в не вонючем подъезде где-то 1000 долларов, в других городах Армении около 300.
    Ответ написан
    2 комментария
  • Реально ли на чистом HTML, CSS, JS написать CRM систему как Basecamp?

    Wacdis
    @Wacdis
    PHP, Python, GO, Rust, NodeJS, SOA/MSA
    Почему нет?
    1. ТЗ (что должна уметь приложуха)
    2. Customer Journey Map (читайте что это)
    3. Верстка всех страниц, HTML+CSS сверстайте каркасы всех страниц
    4. PWA на чистом JS, база типа Firebase

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

    @lazarevBoris
    Тред просто огонь!:)
    Дело в том, что такой же спор (из 8 страниц, на эту же тему) был не так давно на другом ресурсе, где мудрый дядька под ником "javascript" объяснял окружающим (которые тоже уперлись рогом, как и многие здесь), почему в js по факту всё является замыканием.
    Поэтому было крайне интересно, чем же и здесь дело закончится.
    И в очередной раз было доказано, что где бы ни была объявлена функция (а начиная с es6 и let - и блок кода) - она образует замыкание с цепочкой внешних лексических сред (или хотя бы одной LE), что полностью соответствует определению, предысторию которого хорошо описал Александр.
    Что наглядно изобразил Alexandroppolus (надеюсь, вы не будете против, если я достану ваш пример из jsfiddle и размещу здесь, чтобы он не пропал с течением времени):

    description:
    функция, созданная внутри iframe, замкнула внутрифреймовую глобальную переменную, и продолжает работать, даже когда фрейм удалили. Кнопкой frameValue можно убедиться, что в window той переменной нет.

    html:
    <script>
      var globalValue = 1000;
      var globalCounter = function() {
        return globalValue++;
      };
    </script>
    <div>
      <button>iframe counter</button>
      <button>globalCounter</button><br >
      <button>frameValue</button>
      <button>globalValue</button>
    </div>

    JS:
    const iframeHTML = 'iframe...<' + `script>
      var frameValue = 1;
      var counter = function() {
        // debugger;
        return frameValue++;
      };
      
      window.parent.iframeCounter = counter;
    <` + '/script>';
    
    function createTempFrame() {
    	const blob = new Blob([iframeHTML], {type: "text/html"});
      const frm = document.createElement('iframe');
      frm.src = URL.createObjectURL(blob);
      
      document.body.appendChild(frm);
      
      setTimeout(() => {
      	document.body.removeChild(frm);
      }, 900);
    }
    
    window.onload = function () {
      const buttons = document.querySelectorAll('button');
      
      buttons[0].onclick = function() {
        alert(iframeCounter());
      };
    
      buttons[1].onclick = function() {
        alert(globalCounter());
      };
      
      buttons[2].onclick = function() {
        alert(window.frameValue);
      };
      
      buttons[3].onclick = function() {
        alert(window.globalValue);
      };
     
      createTempFrame();
    };


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

    @Vitsliputsli
    Абсолютно понимаю автора, он цитирует определение замыкания, а ему в ответ - определения не нужны, они лишь путают. Он спрашивает, а как тогда? Ему кто про мусорщик, кто про стек, и у него создается ощущение, что сами не могут договориться. Но кроме этого, автор прав, его функция - замыкание.
    Замыкания везде работают одинаково. Если функция содержит ссылки на переменные объявленные вне тела этой функции, и которые не являются ее параметрами - это и есть замыкание. Что значит фраза - все функции в javascript - замыкания? Дело в том, что в других языках область видимости может просто не позволить обращаться к внешним переменным, в таких языках функция не будет замыканием, но может быть возможность превратить функцию в замыкание через специальный синтаксис. В javascript таких манипуляций не нужно, поэтому в нем любая функция - замыкание.
    Т.е. замыкание это возможность в функции создать ссылки на внешние переменные. А здесь уже как следствие, работа мусорщика, если есть рабочая ссылка, то объект не уничтожается, а в приведенных примерах с 2 функциями она рабочая, так как можно получить доступ из корневого объекта, что удовлетворяет требованиям алгоритма mark-and-sweap. Но это следствие, а не принцип работы замыкания.
    Поэтому автор абсолютно прав - его функция это замыкание. Потому что ни в одном определении замыкания нет никаких упоминаний о мусорщике, а значит разницы нет на какие внешние данные ссылаться.
    Другое дело, все хотят видеть не замыкание, а его хитрое использование, а именно сохранение ссылки объявленной в замыкании при уничтожении ссылки во внешней функции. Не надо считать собеседующего бездарем, если бы вы ему объяснили свою точку зрения, он вполне мог бы и согласиться, хотя и не факт, многие собеседования проходят в виде допроса, что говорит о неадекватности или о слабой квалификации собеседующего, в такие конторы не стоит идти.
    Ответ написан
    1 комментарий
  • Для каждого проекта - свой набор плагинов. Как?

    Вы можете использовать Required Plugins опцию, которая позволяет для каждого проекта указать список плагинов, затем при открытии этого проекта IDE будет предлагать их включить/установить: https://www.jetbrains.com/help/idea/managing-plugi...
    Ответ написан
    3 комментария
  • Для каждого проекта - свой набор плагинов. Как?

    @mkone112
    Начинающий питонист.
    Да никак. Баг-трекер jetbrains завален подобными тикетами, первое упоминание от 2006 года.
    Ответ написан
    1 комментарий
  • Webstorm и поддержка php или стоит переходить на phpstorm?

    DevMan
    @DevMan
    All the features in WebStorm are included into PhpStorm, with full-fledged support for PHP and Databases/SQL support added on top.
    в сравнении пхпшторм и вебшторм у первого есть только один минус - цена.
    возможно, еще фронтОвые шняги в вебшторме появляются чуточку быстрее.
    Ответ написан
    5 комментариев
  • Webstorm и поддержка php или стоит переходить на phpstorm?

    Decadal
    @Decadal
    1. Дешевле - обойтись. Проще (особенно если пиратить) - переходить
    2. нет
    3. нет
    Ответ написан
    3 комментария
  • Шаблонизатор/препроцессор для верстки в 2021?

    @Froggyweb
    из адекватных для верстки - pug и nunjucks
    ejs и handlebarsjs - слишком низкоуровневые, хотя наверняка быстрее.
    React Vue Angular - это про другое.
    nunjucks должен нормально работать с Webpack. Даже для Vite есть плагин, что и попробую сейчас.

    Ну либо использовать posthtml-include, но это так себе костыль.
    Под вебпаком PUG и pug-bem-plain-loader работают отлично, но вебпак как-то не торопливый. Галп + Вебпак для js - лучше, Vite пока фантастика, но плагинов не густо.
    Ответ написан
    Комментировать
  • Какой самый быстрый способ проверить доступность сайтов?

    @Kirill-Gorelov
    С ума с IT
    Попахивает обманочкой))
    Потому что на сегодня существует 220 895 309 доменов во всех зонах.

    Ну это ладно.
    А вообще я решал подобную задачу. Код не дам, потому что я бросил эту идею.
    https://qna.habr.com/q/1023898
    Ответ написан
    4 комментария
  • Какой самый быстрый способ проверить доступность сайтов?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Задача какая-то то ли выдуманная из головы, либо впезапно энтерпрайзного порядка. Возникают закономерные вопросы - откуда взялись эти 250 миллионов? Зачем проверять их все? Зачем делать это ежедневно?

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

    Короткий ответ: "готовый софт есть - любой, способный совершить HTTP-запрос, получив код ответа".

    P.S. - 300-ые коды ответа не свидетельствуют о недоступности домена, имхо, их тоже нужно учитывать.
    Ответ написан
    4 комментария