• Как перерасти из кодера в программиста?

    @AlexSer
    Думаю хорошие программисты все идеалисты. Именно поэтому им все время не нравиться то, что они делают. Сегодня тебе кажется, что ты пишешь красивый код. А через месяц смотришь на свой тот же код, и думаешь: - "блин что за урод это писал, ну как так можно".))
    Ответ написан
    2 комментария
  • JS последний элемент массива?

    Stalker_RED
    @Stalker_RED
    Если этот массив больше не нужен, то можно делать .pop()

    [1,2,3].pop() // -> 3

    Еще можно делать slice(-1), но мне кажется, что это хуже читается.

    Чтобы без лишних операций в виде поиска длины массива
    И вообще, нет никакой операции поиска, длина массива - это свойство самого массива, и обращение к элементу через индекс (вот как у вас сейчас) гораздо быстрее, чем модифицировать массив )
    Ответ написан
    Комментировать
  • JS последний элемент массива?

    alvvi
    @alvvi
    export default apathy;
    Как сеньер разработчики бы выбрали последний эллемент массива?

    Наверное, как и все остальные
    array[array.length - 1]

    Чтобы без лишних операций в виде поиска длины массива

    Если тут и есть лишняя операция, то это как раз -1, длина массива - это свойство, ничем от вашего array.last оно не отличалось бы, если бы второе существовало, конечно.
    Ответ написан
    Комментировать
  • Как на JS можно создать календарь?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Ответ написан
    Комментировать
  • Какую лучше книгу начать читать новичку по JS Эрик Фримен, Элизабет Робсон или Макфарланд?

    vetero4eg
    @vetero4eg
    Frontend
    После основ из первого курса ITDN у меня хорошо пошел "Выразительный JS" (Haverbeke).
    Ответ написан
    Комментировать
  • Какую лучше книгу начать читать новичку по JS Эрик Фримен, Элизабет Робсон или Макфарланд?

    rim89
    @rim89
    программист-велосипедист
    (прям что бы совсем разжевали все, вот что бы не знающему ничего стало понятно)

    Ни что, а сколько раз
    Я бы посмотрел какой нить курс , например от itvdn или Специалист.
    Потом почитывал бы книгу. У меня Флэнаган - карманный справочник. ( там где то и написано, что это нормально что не понятно будет с первого раза, но с каждый новым прочтение вы все больше будете знать)
    Знания надо постоянно повторят. А умнее заключается не в том, чтобы знать всё, а в том, чтобы знать где найти решение.
    Ответ написан
    Комментировать
  • Какие проблемы решает качественный дизайн сайта?

    vilka_2009
    @vilka_2009
    Верстаю
    Я думаю ты вообще не с той колокольни смотришь на ситуацию. Проблема любого начинающего менеджера-продажника в том, что он думает, что продать можно только тогда, когда предлагаешь человеку то, что он купил бы. А ты попробуй продать то, что понравилось бы людям, посетителям сайта. Представь себя целевой аудиторией.
    1) Спроси себя, как ты относишься к сайтам, особенно данной тематики? Цепляет ли тебя сайт, если у него качественный продуманный дизайн? Сравни с другими "некачественными". Отсюда ты почерпнешь какие проблемы можно решить дизайном.
    2) Дальше спроси себя, если у сайта будет хороший дизайн, как бы ты им пользовался? Как часто заходил бы? Как долго на нем был бы? И т.п. Отсюда ты почерпнешь выгоды.
    3) Если тебе плевать на дизайн сайтов, то забей на него и иди продавать то, что тебе нравится.
    Ответ написан
    Комментировать
  • Ваша структура проекта под верстку?

    vilka_2009
    @vilka_2009
    Верстаю
    шапка, футер, сайдбар - безусловно являются компонентами.
    логотип, меню, переключатель языков, соц сети, гамбургер:
    лого - да, меню - да,
    переключатель языка - не обязательно, но если код этого блока занимает много места, можно вынести в отдельный компонент,
    соц.сети - обычно да. Потому что обычно соц.сети много где на сайте используются,
    гамбургер - наверное не стоит, потому что: 1) является неотъемлемой частью шапки, 2) не занимает много места.
    При желании мелкие штуки типа гамбургера можно вынести в подкомпонент, если система сборки позволяет.

    Итак, что такое компонент:
    1) независимый блок - часть кода, используемая независимо от родителя, может применяться в разных местах
    2) большой блок - большой кусок кода, который имеет конкретный замысел, типа баннера, слайдера и тп. Пускай он нигде и никогда не будет больше использоваться, кроме как на главной, но он большой и самостоятельный мальчик. Так что селим его отдельно.

    Вот как минимум две отличительные черты компонентов от некомпонентов.

    Ой, это я что-то про разметку все говорила =))

    Про стили - как говорили выше, все нужно отделять. Отлично, если каждый css-файл будет содержать верстку только одного логического блока.

    ПыСы: глядя на твой скриншот, складывается впечатление, что папки для этих файлов не нужны. Смысл в таких длинных и повторяющихся путях?! components/header/header.scss Да никакого
    Ответ написан
    7 комментариев
  • Верстка с нуля: какие основные этапы работы?

    Underdoggit
    @Underdoggit
    Почитал, но не нашел человека который использует bootstrap4 как css фреймворк? Интересно почему? Неудобен? Или он умирает?
    Ответ написан
    4 комментария
  • Какие самоучители посоветуете вы для изучения английского?

    @kristinka10
    Могу посоветовать отличный аудиокурс «Your 5-step plan for confident English» на сайте https://enjoyenglish-blog.com
    Ответ написан
    Комментировать
  • Где джуну получать тестовые задания?

    @Daniil1979
    Посмотрите https://www.codewars.com/ - тут можно потренироваться в решении задач самых разных типов на любых языках программирования и диалектах SQL. Также, после того, как решите задачу, можно посмотреть чужие решения и сравнить со своими.
    Также вариант (но уже платный) - найдите курсы по интересному Вам языку программирования на https://www.coursera.org/ или https://www.datacamp.com или https://www.pluralsight.com. Будет и теория, и практика. А на Coursera также придётся заниматься разбором и анализом чужого кода. После успешного прохождения курса на любом из ресурсов можете добавить его в свой профиль на https://www.linkedin.com/.
    Ответ написан
    Комментировать
  • Как делаются подобные сайты?

    Ведь можно, для начала, найти клёвые примеры с фоновым изменением и развивать\ковырять\адаптировать:
    Ответ написан
    Комментировать
  • Где джуну получать тестовые задания?

    maxfarseer
    @maxfarseer Автор вопроса
    https://maxpfrontend.ru, обучаю реакту и компании
    Выяснилось, что удобного места со списком заданий нет, кроме ответа от Максим Зайцев
    Так же выяснилось, что созданием ТЗ и последующим разбором в данный момент никто не занимается кроме меня, поэтому добавляю ответ от себя.

    Здесь есть задания и разбор. Будет пополняться.

    Задание 1 (уже разобрано)
    Задание 2 (будет разобрано в конце мая)

    p.s. ссылки ведут на github, поэтому я надеюсь у модераторов не будет претензий.
    Ответ написан
    Комментировать
  • Как правильно сверстать данные блоки на bootstrap 4?

    @ljutaev
    html-програмист
    привет) первый экран на бустрапе дела бы так:
    .container
    - .row
    -- .col-md-6.p0
    --- .content
    -- .col-md-6.p0
    --- .row
    ---- .col-md-12.p0
    ------.content
    -----.col-md-12.p0
    ------.content

    .content центрировал бы через абсолютное поз. с отрицательным transform: translate(-50%, -50%)
    Ответ написан
    Комментировать
  • Верстка с нуля: какие основные этапы работы?

    pavelkarinin
    @pavelkarinin Автор вопроса
    Full Stack Web Developer
    На этот вопрос есть подписчики, не ожидал, что столько, но это говорит о том, что вопрос интересен и это хорошо. Поэтому хоть и я его автор, но отвечу тоже. Я, как человек, который пережил эпохи Mosaic, Netscape и IE (старички меня поймут), отвечу ещё и по той причине, что часто, нет … очень часто сталкиваюсь с тем, что действительно "талантливые" начинающие Front-End тратят попусту свое время, из-за незнания такого, казалось бы, вопроса ни о чем (как выразился Froggyweb) об организации своего workflow и начинают не с того, с чего стоило бы начинать в результате это приводит к тому, что некоторая работа просто дублируется, переделывается и т.д. лишь потому, что изначально об этом не подумал.

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

    Я работаю на трёх мониторах: центральный - вёрстка, левый - результат, правый - дизайнерский макет + чего ещё что надо по ходу пьесы, типа киношки, статейки и т.д.;

    Среда:
    в Visual Studio - для сложных и крупных проектов, плотно подсевших на Back-End;
    в Visual Studio Code - для проектов попроще;
    хе-хе в Блокноте - для совсем простых))

    Музыка – это святое, тем более я её тоже иногда пишу, но слушаю всегда чужую на SoundCloud))

    Создаю папку решения

    Создаю в ней подпапку всегда с одним и тем же имеем: _native_design, в которую (в зависимости от формата портирую дизайн)

    Выбираю явственно общие компоненты страниц (шапка, контент, меню, боковые меню, подвал и д.р.) и для каждого создаю простой пустой файл scss с названием, соответствующим компоненту.

    На этих компонентах выбираю неизменяемые и изменяемые элементы и определяю для них селекторы в соответствующих файлах scss (тут всегда туго с названиями, поскольку от природы я не очень одарён)

    Часто встречающиеся типовые элементы также удостаиваются собственного каскада, выделенного в отдельный файлик)) для записи в него миксинов и т.п.

    Исходя из сетки, и из минимально необходимой версии браузеров (речь конечно же об IE), создаю файл _base.scss который наполняю сбросом стиля, и объявлениями для grid (ну все это не вручную, а сниппетами, импортами, инклудами, которые у меня подготовлены почти на все случаи жизни).

    Стараюсь придерживаться отлично зарекомендовавшего себя принципа "one base", который подразумевает единую основу для всего макета, т.е. есть одни базовый каркас (основа), и эта основа является местом для навешивания на неё всего необходимого. Часто вижу ошибки в этом плане, когда доходит до того, что ради одно "нестандартного" компонента страницы, встречающегося НЕ на каждой странице, используется отдельный (и не один) базовый стиль (по сути, файл), в котором 90% каскада продублировано с другим и т.п.

    После такой подготовительной работы начинается HTML, и когда он готов, перехожу к непосредственно блокам в каскад, разумеется, в постоянном контакте с HTML – это самый долгий этап во всей работе, я думаю все это прекрасно понимают.

    Шрифты, тоже достойны внимания, т.к. не все дизайнеры знают, что это такое с точки зрения Web, и используют их не по назначению (такое бывает), что требует согласования.

    Потом начинается работа с адаптивностью. Я всегда сворачиваю контент, т.е. начинаю с широкого формата, потом desktop, tablet, mobile. Тут ничего сложного нет, особенно когда есть сетка, исходя из того насколько много компонентов плотно зависят от размеров, выбираю как прописывать медиа-запросы, т.е. либо запрос внутри селекторов блоков, либо селекторы внутри запроса. Как правило, используется 4-6 точек + по две на каждую основную точку, т.е. на 1px больше и на 1px меньше, но не всегда, зависит от макета. Не забываем про DPI.

    Потом начинается работа с картинками. Ее я выношу отдельным этапом из-за умений или неумений дизайнера. Поскольку графика не всегда векторная там, где она таковой желательно должна быть, не всегда сразу это обнаруживаешь, тогда начинаешь трясти дизайнера, чтоб доводил до ума. Тут я думаю особо вопросов быть не должно. Оптимизация растра, оптимизация вектора и т.п.

    Потом начинается JS, т.е. наполнение интерактивом уже не средствами CSS, а именно скриптовым.

    Потом начинаем крутить-вертеть макет везде, где-только можно, исходя из требований клиента о поддержке минимальной версии браузеров. Тут сложностей особо не бывает, так как с браузерами в плане поддержки стандартов уже полегче, и юзеры стали обновлять чаще свои браузеры. Так или иначе изначально верстаешь с оглядкой на тут самую минимальную версию. Хотя бывают еще запросы на поддержку IE7, особенно часто от клиентов из средней Азии.

    Короче, как-то так… ради ответа, открыл Word и накатал этот текст. Уверен, что что-то пропустил, о чем-то не сказал, но не судите строго))

    UPD:
    Забыл сказать: про измерения скорости загрузки и скорости отрисовки. Этому стоит уделять внимание особенно в макетах со сложной композицией! Следует помнить о том, что перед отрисовкой браузеры проводят серьезный анализ DOM и каскада стилей, есть способы оптимизировать эти моменты, это важно для мобильных устройств, если у сайта нет для них отдельной версии. Это же касается и JS в части вашего ручного кода.

    UPD2:
    Ребят, я Skype указывал не для того, что вы присылали мне на него вопросы. Есть уточнения, пишем сюда или создаем новый вопрос на Тостере. Спасибо за понимание.
    Ответ написан
    4 комментария
  • Как сделать адаптивным такое шахматное поле?

    dubr
    @dubr
    пыхарь
    https://codepen.io/dubrowsky/pen/oGMomN
    Это конечно не ваша задача, зато на флексбоксах из плоского списка, труъ-адаптив, остается шахматной при четном количестве колонок, и я вспомнил, как программировать на LESS :)
    Ответ написан
    Комментировать
  • Верстка с нуля: какие основные этапы работы?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Начинается с https://www.mosne.it/playground/mosne-flexbox/
    и этим всё и заканчивается. Он - полностью покрывает все потребности.
    UPD: Когда админка или SPA - иногда подрубаю свой велосипед: xmoonlight.github.io (включая includeHTML)
    UPD2: А вот это для тех, кто любит кодить на jQuery: смотреть ролик.
    Ответ написан
    1 комментарий
  • Верстка с нуля: какие основные этапы работы?

    mrerberg
    @mrerberg
    Yep
    Mikhail @NooNoo
    Рубрика "Давай глянем,что там у нас есть". Я использую такие штуки в работе:
    Препроцессор: LESS
    Работа с макетами: PH или Sketch.
    Сборщик: Gulp
    Методология: БЭМ (но начал заглядываться на SMACSS)
    Консоль: консоль :D
    Место хранения репозитория: GitHub.

    1) Создаю репозиторий на гите.
    2) Создаю локально структуру проекта. (папки для картинок и тд).
    3) Открывают макет
    4) Создаю первые наброски в html (создаем классы по выбранной методологии), в голове держим,что mobile first. Подключаю основные фалы препроцессора (шрифты, глобальные стили, миксины, класс visually-hidden, переменные)
    5) Выстраиваю сетку. (flexbox или гриды)
    6) Начинаю стилизовать мобилку -> планшетную -> десктопную версию.
    7) Отшлифовка кода и поиск более рациональных решений, где это допустимо.
    8) Донастройка сборщика, который все в итоге соберет продакшен версию.

    Вкратце как-то так)
    Ответ написан
    2 комментария
  • Верстка с нуля: какие основные этапы работы?

    Vlad_IT
    @Vlad_IT Куратор тега Вёрстка
    Front-end разработчик
    Использую vscode+webpack+pug+scss+бэм. Из физических инструментов, основной моник: lg ultrawide 29um69g, рядом прикручен моник от ноутбука повешенный вертикально, подключенный через универсальный скаллер.

    0) Запускаю Spotify :-)

    1) Произвожу установку всех необходимых модулей для сборки. В моем случае у меня набор конфигураций для webpack (отдельные файлы для pug, scss, static и.т.д., выбираю что нужно).

    2) Запускаю avocode, загружаю в него макет. Определяю в нем переменные (в то же время записываю их, чтобы сразу кинуть в scss файл) для цветов, размеров шрифтов и.т.д. чтобы при получении кусочков кода из него, он сразу расставлял переменные.

    3) Запускаю VS Code, открываю нужную папку.

    4) Пишу размету на Pug. Пишу с БЭМ, если встречаю повторяющийся блок, то открываю файл _mixins.pug, в который пишу миксины для повторяющихся блоков, например товаров, пунктов меню, каких-то блоков и.т.д. Pug умеет делать циклы, это ускоряет сильно.

    5) Когда HTML готов, начинаю делать каркас. Если дизайн сделан по сетке, определяю контейнеры, колонки, строки в свои классы (не пишу в html тучи классов аля col-md-6, а пишу в SCSS инклуды в нужные мне блоки, типа @include make-col(2) и.т.д.).

    6) Экспортирую картинки из Avocode. Очень делается просто, указываю папку и просто кликаю экспорт и ввожу название файла и расширения. Преимущественно для иконок использую svg, если нет svg, то ищу эту иконку в интернете (дизайнеры редко рисуют иконки сами, но зато любят вставлять их не в векторе). Если иконка простая, могу сам ее в inkscape обвести, ну и если нет, то экспортирую png в размере (благо авокод это позволяет, если конечно дизайнер не вставил в исходном маленьком размере). Когда есть контакт с дизайнером, трясу его, ибо растр это плохо для иконок.

    7) Пишу стили блоков из страницы. На этом этапе можно на втором монике параллельно смотреть футураму или
    Арчера :-) Но чаще на широком монике слева браузер, справа VS Code, а на втором монике Avocode (может меняться местами с браузером). Мысленно нарезаю страницу на блоки. Для каждого блока (БЭМ) создаю отдельный scss файл (кто-то даже для элемента создает, но мне лень), из него сразу выписываю все селекторы. Иногда могу сначала выписать все селекторы со страницы (но так лучше не делать, т.к. во время работы может потребоваться изменить что-то в разметке), но чаще для одного блока выполняю этот пункт и за ним сразу выполняю пункт 8, потом для нового блока опять 7 и 8 и.т.д.

    8) Пишу css код вместе с Avocode, у него беру нужные мне параметры (а он уже подставил в них переменные), и вставляю в мой код. И параллельно сверяю со скрином макета используя вот это расширение https://chrome.google.com/webstore/detail/perfectp...

    9) Пишу адаптив. Я не могу привыкнуть к методологии mobile-first, поэтому пишу всегда сначала полную версию сайта. Я понимаю, что это чревато всякими проблемами и это типа не модно, но мне норм.

    10) Медиа-запросы пишу прямо в блоках, для каждого блока/элемента/модификатора может быть отдельный медиа-запрос. Но для начала определяю breakpoint'ы для разных экранов (чтобы их не было сотни разных), если использую Bootstrap, то беру его breakpoint'ы.

    11) Добавляю анимашки. Даже если заказчик не просил отдельно (и если не указал отдельно, что нельзя), он все равно будет доволен, а с animate.css+onscreen.js это вообще работа 10 минут. Сложные анимации обговариваю отдельно, чтобы не сделать ненужную работу.

    11) Все снова сверяю, пишу скрипты где надо. Для слайдеров в 99% случаев подходит slick (с доработками конечно, но там хорошее API), для других случаев могу написать свой.

    12) Сдаю заказчику и жду ответа сидя на тостере/пикабу.

    Это чисто мой опыт, опыт фрилансера, не знаю, как делают другие и не могу на 100% утверждать что это 100% правильный способ. Я так и не смог заставить свой конфиг webpack правильно вставлять спрайты svg.
    Надеюсь чем-то поможет мой ответ.
    Ответ написан
    7 комментариев
  • Как провести собеседование на верстальщика?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Если не знаете - зачем тогда что-то выдумывать?
    Дайте им работу - пусть делают.

    Пусть сделают "резиновое" (без фиксированных разрешений!) поле без JS, Flexbox, table, Canvas, SVG:
    5ae6041741f87866064962.png

    Растягиваем окно браузера в любом направлении и оно выглядит так:
    5ae604865dbe9876036252.png
    Ответ написан
    Комментировать