• Делить ли React-компоненты на чистые и контейнерные?

    y0u
    @y0u
    dev
    Я стараюсь делить. Другие не делят. На вопрос невозможно дать однозначный ответ. Зависит от проекта, команды и настроения того, кто пишет :)

    Дополню ответ: Если есть какой-то участок кода, который нужно использовать повторно, очевидно лучшим решением будет вынести его в отдельный модуль / функцию и т.п.. Деление на чистые компоненты и компоненты с логикой по сути и делается для того, чтобы вынести повторяющийся код в отдельный компонент. Иногда проще скопировать простой участок кода и не заморачиваться, а иногда лучше вынести куда-то. Так что зависит от задач и особенностей проекта.
    Ответ написан
    Комментировать
  • Где хранить большой массив объектов в реакт приложении?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Мой взгляд, на истину не претендую:

    Я сторонник того, что на клиенте вообще не стоит хранить большие объемы данных. Т.е. запрашивает только те, которые нам нужны для работы/отображения в конкретный момент. Все фильтры/сортировка/пагинация на стороне сервера. Понятно, что это не всегда возможно, поэтому идем дальше...

    В хранении большого объема данных в редаксе не вижу ничего плохого, если они редко меняются. Если часто - неприятно, нужно поддерживать иммутабельность, затраты на garbage collector.
    Плюсы - быстрый доступ до данных, т.к. хранятся они в памяти.
    Минусы - поддержка иммутабельности и затраты на память.

    Если уж отходить от редакса - можно воспользоваться каким-то стором на основе мутабельных объектов, например mobx.

    Если всё это держать в памяти не хочется - то действительно можно взять IndexedDB. Хранится на диске, между перезагрузками сохраняется, асинхронное апи, есть индексы по полям. Нужно учесть, что на браузерах в режиме инкогнито может не работать или работать ограниченно (для предотвращения отслеживания).

    Ну и, конечно, вопрос в объеме данных. Просто 2к объектов - не то, чтобы сильно много. Вопрос, насколько тяжелых объектов.
    Ответ написан
    2 комментария
  • Идеальный алгоритм вёрстки сайта?

    iiiBird
    @iiiBird Куратор тега Вёрстка
    Пока ты спишь - твой конкурент совершенствуется
    если именно брать как "идеал" и частично этого придерживаться, то нормальный алгоритм. но в реальных условиях слишком дотошный алгоритм.
    если ты все это мастерски отточил и щелкаешь как семечки - мое уважение.
    но если это уменьшает скорость верстки (а при реальных условиях это очень сильно может уменьшить скорость верстки) - то тут уже лучше подумать и не быть таким дотошным. потому что такой "идеал" не нужен никому кроме тебя самого.
    т.е. если брать твои 15 страниц, о которых ты ведешь речь и верстаешь их неделю - это уже можно считать, что долго. и за эту неделю ты бы мог сверстать в 2 раза больше страниц и получить также в 2 раза больше денег.

    про SASS, PUG, GULP и пр. спорить не буду. если нужно будет - сам дойдешь до этого со временем.
    Ответ написан
    3 комментария
  • Идеальный алгоритм вёрстки сайта?

    delphinpro
    @delphinpro Куратор тега Вёрстка
    frontend developer
    В целом согласен. До пункта №7.

    Я обычно придерживаюсь принципа верстки независимыми блоками.
    Поэтому после анализа макетов, я делаю одну-две-три (смотря по объему макетов) вспомогательных страниц, на которых верстаю:

    1. Базовые элементы. Общая типографика, кнопки, ссылки и т.п.
    2. Общие блоки. То что повторяется на нескольких страницах и/или может быть переиспользовано, какие-то виджеты, менюшки, и т.п.

    Все это занимает основную часть времени работы. И к окончанию этих этапов я имею своего рода набор, или конструктор, из готовых блоков. Остается только написать лейауты для разных страниц и раскидать по ним имеющиеся блоки.

    Для этого всё закидываю на гитхаб-пейдж, чтобы по ссылке я мог открыть с телефона или попросить знакомого проверить на другой ОС c телефона


    Это лишняя трата времени. Пусть небольшая, но все же. Плюс, отслеживать качество верстки все-таки удобнее в процессе, а не по окончании подкручивать.
    Поэтому используем browser-sync. Поднимается сайт, доступный по IP в домашней локалке с любого устройства. Совет: использовать всегда один порт в browser-sync, а на устройствах сделать закладки на этот адрес. Любой сайт, который в данное время разрабатывается, открывается одним тапом по закладке.
    Кроме того BS дает бонус в виде синхронизации действий сразу на всех устройствах: клики, прокрутка, ввод. Это мега-удобно — кликаешь на компе, краем глаза смотришь в планшет и телефоны, сразу видишь там все изменения и поведение.

    Всё готово, сжимаю CSS, JS. через веб-сервисы.


    Опять тратите время. Настроенный Gulp в одну команду проделает все оптимизации (на больших проектах даже кофе можно успеть сделать, пока собирается билд=).

    Еще обратите внимание на инструмент lighthouse в инструментах разработчика.

    скриншот
    608fcaa260f31153020142.png


    Не нужно никуда сайт заливать, чтобы проверить на доступность, производительность и т.п.

    Про CMS ничего не скажу. Клиенту удобнее кнопочки тыкать в условном вордпрессе.

    Я не упомянул SASS-фигас и т. д, так как не увидел практической пользы для проектов на 1-15 страниц.


    Возможно вы плохо знакомы с возможностями препроцессоров, или вам никогда не требовались они, кроме переменных.
    Но даже в этом случае, препроцессор помогает упорядочить и структурировать код, а не писать одну простыню на 10 тыс строк в одном файле.

    Ну вот зачем PUG? Как конкретно он помогает на небольших проектах 1-15 шаблонов страниц.


    Помогает. Нет, конкретно Pug я очень не люблю. Но другой, более "хэтээмэльный" шаблонизатор бывает полезен. Я уже упомянул выше о верстке независимыми блоками. Шаблонизатор позволит не копипастить эти блоки, а использовать их как компоненты.

    Префиксы? В кодовом редакторе они и так есть.


    Я считаю, что исходный код должен быть чистым, без префиксов. Это лишний визуальный мусор. Пусть лучше автопрефиксер этим занимается. К тому же этот плагин использует актуальную базу caniuse на основе вашего .browserlist. Пусть профит и не большой, но все же поменьше на выходе неактуальных свойств.
    Ответ написан
    2 комментария
  • Как парсить сайты на технологии web socket?

    @StiflerProger
    const WebSocket = require('ws');
    
    const ws = new WebSocket('wss://dallas.tx.publicsearch.us/ws', {
      headers: {
        "Origin": "https://dallas.tx.publicsearch.us",
        "Cookie": "authToken=51f69ac5-67c5-41ac-8943-cace7ebc6b3c; authToken.sig=x9S_G8Lwy6KHaB2Ek4PT1PR7jhE;"
      }
    });
    
    ws.on('open', () => {
      console.log('Соединение открыто');
    });
    
    ws.on('close', (code, reason) => {
      console.log('Соединение закрыто', code, reason);
    });


    у всех сайтов свои тараканы будут) к примеру в том что я скинул выше. Тебе обязательно передавать в заголовке запроса Origin и Cookie. Если с первым все ясно, то первая проблема будет с куками. Их как я понял можно получить сделав обычный GET запрос на главную. Тебе эти куки передадут в Response Headers
    606c101d381a7125759663.png

    https://www.npmjs.com/package/ws

    После удачного коннекта, не забывай потом слать пинги ) Формат пингов уже посмотришь во вкладке Network в браузере
    Ответ написан
    Комментировать
  • Как лучше верстать сайты с векторными элементами?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    Если не лень, то можно сохранить каждую фигуру отдельно(желательно в svg) и позиционировать на фоне, таким образом у фигур будет плавающая позиция и на других экранах можно перестроить по другому, убрать половину на мобильных и т.д.. выглядеть это будет примерно так :
    background: url(../images/other/decor-figure-1.svg) no-repeat 53% 6%,
                url(../images/other/decor-figure-2.svg) no-repeat 45% 22%,
                url(../images/other/decor-figure-3.svg) no-repeat 82% 22%,
                url(../images/other/decor-figure-4.svg) no-repeat 45% 96%,
                url(../images/other/decor-figure-5.svg) no-repeat 83% 82%
    Ответ написан
  • Как такое сверстать?

    RAX7
    @RAX7
    Держи, немного поправил один из своих старых набросков.

    Принцип работы примерно, как описал Максим Морев в своем ответе.
    Ответ написан
    2 комментария
  • Как такое сверстать?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вот здесь, например, делал когда-то такую вещь (блок "Этапы создания корпоративного сайта").

    605df09f637c9864487824.jpeg

    Идея, вкратце:
    1. Элементы размещаете просто в сетку с помощью inline-block/float/flex/grid - как привычнее.
    2. Родителю задаёте относительное позиционирование, в него помещаете абсолютный элемент на всю ширину/высоту с небольшим запасом, на котором будете рисовать SVG.
    3. Как нарисуется - на js считаете ключевые точки (координаты), через которые нужно провести линии.
    4. Динамически рисуете SVG по вашим ключевым точкам.
      О том, какие варианты вообще есть, можно почитать на MDN, например.
      Выглядеть это будет примерно так:

      605df0b0256ca826129561.jpeg

      В вашем случае рекомендую использовать кривые Безье. Здесь мне нужно было сделать полукруг, поэтому я использовал дуги, у вас же просто статичная величина закругления.
    5. На ресайз окна считаете ключевые точки заново и перерисовываете SVG.
    6. Опционально заморачиваетесь и добавляете сверху ещё один путь, который по скроллу будет "заполняться"


    Это в целом чёрная магия, можно полдня убить, но красиво :)
    Если это всё очень сложно, то просто картинкой вставьте, высоту элементов фиксируйте, и меняйте картинку для адаптивных вариантов.

    Готовых вариантов тут в общем-то вы вряд ли найдёте, нужно взять и разработать.
    У меня была идея оформить это в какую-то библиотеку, но как и все остальные идеи - и ныне лежит в туду-листе на 60+ пунктов. :)
    Ответ написан
    12 комментариев
  • Почему развалился сайт после обновления хрома до 89 версии?

    @Flying
    В общем, поигравшись немного с предоставленным кодом, стало понятно следующее:

    Это явно проблема браузера, так что имеет смысл сообщить о ней разработчикам, написав bug report в их трекер.

    При этом проблема несколько не в том месте где ожидалось: элементы страницы позиционируются правильно, а вот отрисовываются некорректно:

    60521d719ba8e466217077.png

    Здесь видно, что картинка с точки зрения браузера находится в одном месте, а по факту нарисована в другом.

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

    Я подготовил пример, демонстрирующий вариант решения. По сути он сводится к добавлению стиля, который производит визуально почти незаметное изменение стилей, которое, однако, заставляет браузер перерисовать всю область:
    .chat-item__content.force-repaint .content-chat-content__message {
        opacity: 0.99;
    }

    Остаётся только "дёрнуть" CSS класс force-repaint на элементе контейнера - и всё сразу встаёт на место, поскольку осуществляется перерисовка. Например вот так:

    function forceRepaintToFixChrome89Issue() {
        if (!navigator.appVersion.match(/\sChrome\/(89|9\d)\./)) {
            // Apply only for Chrome 89 and 90+
            return;
        }
        window.requestAnimationFrame(function () {
            const e = document.querySelector('.chat-item__content');
            if (!e) {
                return;
            }
            const fr = 'force-repaint';
            e.classList.add(fr);
            window.requestAnimationFrame(function () {
                e.classList.remove(fr);
            });
        });
    }


    В примере я добавил для этого кнопку, но в реальном приложении логично делать это, например, при изменении содержимого контейнера.
    Ответ написан
    1 комментарий
  • Переход с Windows 7 на Windows 10?

    Jinglebens
    @Jinglebens
    Я просто скачивал window update assistant и обновлял до 10. Старый ключ подхватывался и не надо было искать новый.

    отсюда
    https://www.microsoft.com/ru-ru/software-download/...
    Ответ написан
    3 комментария
  • Переход с Windows 7 на Windows 10?

    benipaz
    @benipaz
    это идиотизм советовать ломать систему, когда есть лицензионный ключ.
    надо скачать майкрософтскую утилиту windows creation tool и запустить установку десятки. ключ подхватывается автоматом.
    https://3dnews.ru/1028842/polzovateli-windows-7-vs...
    Ответ написан
    1 комментарий
  • Есть ли смысл ставит ssr в 2021 году, если гугл научился исполнять js-код?

    opium
    @opium
    Просто люблю качественно работать
    Всегда имеет
    Ответ написан
    Комментировать
  • Есть ли смысл ставит ssr в 2021 году, если гугл научился исполнять js-код?

    @lolzqq
    HTML,CSS,JS,PHP
    Кроме гугла есть ещё яндекс, который не научился.
    Ответ написан
    Комментировать
  • Бесплатная альтернатива Антивируса Зайцева (AVZ)?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    По классификации вахтёры-сыщики AVZ - типичный "сыщик" Очень жаль, что Зайцев бросил своё детище - "сыщиков" совсем немного, и лично я знаю ещё только один - это Malwarebytes Anti-Malware.
    Но тут есть нюанс. Дело в том, что сейчас компания Malwarebytes предлагает пользователям версию 3, которая, во-первых, стала платной, и во-вторых, стала "как все", т.е. превратилась в унылого банального "вахтёра". Поэтому если хотите воспользоваться элементами "сыщика" в этом антивирусе, придётся отыскать предыдущую версию, не позже 2.2. Естественно, даже в версии 2.2 этот антивирус будет склонять вас на то, чтобы обновиться до 3 - не поддавайтесь на эти намёки, кликайте кнопку "позже". А что касается антивирусных баз - свежие их версии автоматически, в начале проверки, прекрасно качает и версия 2.2, так что специально об этом вам заботиться не надо (если не считать забот о наличии связи с интернетом). Просто выберите, что проверять, и стартуйте.
    UPD: Вадим, спасибо за пополнение списка действующих "сыщиков" (имею ввиду, естественно, Universal Virus Sniffer). Скачал, попробую пользоваться.
    Ответ написан
    5 комментариев
  • Как сверстать подобный блок с переносом текста на следующую колонку?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Разумнее всего обсудить с заказчиком и дизайнером идею, что тексты под картинкой должны быть независимы от текста в оставшихся 2х колонках. Благо первый столбец и так вполне обособлен.
    И показывать так как на макете только на очень ограниченной ширине окна, а на остальных перестраивать вариантами попроще.

    Из того, что пришло в голову:

    Дальше можно дорабатывать, считая высоту и делая так, чтобы картинка не уходила из второго столбика.
    Или по сценарию выше, перестраивать через media в другую раскладку.
    Ответ написан
    Комментировать
  • Биржи, торгующие ссылками, уже неактуальны? Где, как и для чего покупаются ссылки и покупаются ли?

    php666
    @php666
    PHP-макака
    Как вебмастер говорю, а не как покупатель:

    В 2008-2013 годах сайт с тиц 50 и ~30 страницами давал в сутки около 50 рублей.
    Сайт с тиц 2000 давал в сутки 1000-1500 рублей

    За все эти годы я вывел около 1 500 000 рублей на серии совсем простых сайтов.

    Последняя попытка (2-3 года назад) продажи этих сайтов на сапе не дала ничего.

    ИМХО, направление умерло.
    Ответ написан
    5 комментариев
  • Какой алгоритм разработки клиент-серверного приложения?

    Для БД при инициализации и разработке могут использоваться миграции.
    В чем суть миграций БД?
    Миграции БД в nodejs

    Не знаю как в ноде, но в ASP.NET можно и предпочтительно делать проект используя подход Code First, который предполагает использование миграций для генерации таблиц из кода в БД.
    Ответ написан
    Комментировать
  • Какое состояние у современного фриланса на конец 2020?

    @d-sem
    для начала карьеры лучше найти стабильный офис, постараться выбиться на удаленку
    Ответ написан
    Комментировать
  • Где искать заказы начинающему верстальщику?

    @thesanches
    Для начала, сделать сайт портфолио.
    К каждой ставке прилаживать ссылку на сайт портфолио.
    Я свой путь начинал именно с Кворк, там много заказов не сложных, но и дешевых, для старта, самое то.
    В идеале на 3-4 биржах работать сразу, со временем будут наработаны постоянные заказчики.
    Ответ написан
    3 комментария