• Почему добавление в цикле работает через insertAdjacentHTML, но не работает через append?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    получается так, что кнопка добавляется только к последней карточке
    На самом деле нет, кнопка последовательно добавляется к каждой карточке. Но поскольку вы используете один и тот же элемент, а не создаёте в цикле отдельную кнопку для каждой карточки, она при каждой последующей вставке переносится на новое место и в итоге остаётся у последней карточки.

    let panesList = document.querySelectorAll('.pane');
    for (let pane of panesList) {
        let button = document.createElement('button');
        button.classList.add('remove-button');
        button.textContent = '[X]';
    
        pane.append(button);
    }
    Ответ написан
    1 комментарий
  • Как сделать такую кнопку?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Ответ написан
    Комментировать
  • Как перестать говнокодить и принимать неверные архитектурные решения?

    miraage
    @miraage
    Старый прогер
    как писать поддерживаемый код?

    Если уж очень коротко, то соблюдать SOLID/GRASP. Мне понравился твит одного из авторов React Router:
    https://twitter.com/mjackson/status/1171524189850701825

    Most common mistake software developers make: putting stuff in the wrong place. Coupling responsibilities and concepts that should be kept separate.
    For me, this is 95% of software development. Just figuring out *where* things belong.


    Что гуглить, что учить?

    Фундаментальные знания, вроде вышеупомянутых SOLID/GRASP, паттерны (не только классические паттерны, но и вообще, общеизвестные решения определённых задач), базовые структуры данных. Фреймворки/библиотеки всегда будут приходить/уходить, что-то будет забываться. А фундаментальные знания всегда актуальны.

    Может литературу какую почитать посоветуете?

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

    Можно ли себя называть миддлом, если твой код говно?

    Не пытайтесь себя оценить. В каждой компании свои понятия миддла. А если кто-то 35 лет на лиспе кодил, а потом прыгнет на Angular - кто он, джун или сеньор?
    И, да, все мы в какой-то степени пишем говнокод. Если кто-то Вам доказывает, что он пишет супер чистый код - не слушайте.

    И ответ на главный вопрос.
    Как перестать говнокодить и принимать неверные архитектурные решения?

    Это невозможно. Все проекты, которые чуток сложнее CRUD-ов, рано или поздно обрастают говнокодом. Никто не пишет идеальный код. Код должен работать и решать проблемы бизнеса.
    Ответ написан
    6 комментариев
  • Почему команда Push commit выдает ошибку?

    Скорее всего у вас в Gerrit репозиторий сконфигурирован таким образом, что запрещает пуш напрямую в master
    Ответ написан
    4 комментария
  • Тестовое задание (Junior Frontend), приемлемое ли?

    @kirill-93
    Вертел я такие задания при устройстве на работу.
    Однажды тоже устраиваясь в "крутую" контору прислали большое задание. Все выходные убил на него. Потом еще две недели мурыжили собеседованиями и в итоге не взяли.
    Я с тех пор никогда не соглашаюсь на тестовые задания, которые займут больше получаса моего времени.
    Объемные задания должны оплачиваться. Если они очень требовательно отбирают сотрудников, то сначала надо дать простое задание/прособеседовать и уже если человек их устраивает, давать объемное задание и платить.

    UPD
    Не слушайте, пожалуйста, бред об опыте и пользе для вас. Из таких "будущих хороших специалистов" потом веревки вьют, типа "поработай по вечерам, это ж опыт для тебя!" или "давай ты теперь и по субботам выходить будешь, а мы тебя за это серьёром называть будем!". Очень работает с наивными молодыми людьми.
    Вы поймите, что все эти разговоры про опыт и пользу для вас - это уловки с целью сэкономить и вас обмануть. Всем плевать на ваш опыт, им нужно денег меньше вам заплатить и все.
    Огромное тестовое задание - это неуважение к кандидаду.
    Давай представим обратную ситуацию: я прихожу к потенциальному работодателю и говорю: "Давайте я у вас тут недельку посижу без каких-либо обязательств, а вы мне зарплату платите. А потом посмотрим, может быть останусь, а может уйду". Нормально? Ситуация выглядит именно так, потому что работодатель не делает одолжения принимая на работу, он "покупает" ваше время и ваш опыт и все.
    Ответ написан
    13 комментариев
  • Практика построения графиков?

    Stalker_RED
    @Stalker_RED
    Можно и на сервере сгенерировать картинку с графиком. Но картинка пойдет отдельным запросом же? :) (если не заморачиваться с data-uri)
    Можно вшить все данные для графика в тело страницы.
    Можно почитать что-нибудо о кешировании.
    Можно посмотреть, что страница, на которй ты читаешь этот текст, делает 76 запросов. И норм.
    Можно посмотреть на амазон или алиекспресс, и поудивляться сколько там запросов.
    Можно почитать про HTTP/2 и конвейеризацию.
    Ответ написан
    Комментировать
  • Как правильно отлавливать изменения time на js?

    wapster92
    @wapster92 Куратор тега JavaScript
    Ответ написан
    Комментировать
  • Как просматривать разрабатываемый сайт через телефон?

    @itsjustmypage
    Browsersync в npm для сборщика
    https://www.youtube.com/watch?v=cj29XdGzNt8
    https://www.browsersync.io/
    Не только просматривать, но и взаимодействовать одновременно на всех устройствах (скроллить, кликать, заполнять формочки, вот это всё).
    Ответ написан
    2 комментария
  • Как правильно верстать сайт с арабскими и хинди языком?

    @Flying
    Поскольку недавно пришлось добавлять в одном проекте арабский язык - поделюсь полученным опытом:

    Вёрстку как правило переделывать не нужно, обычно достаточно изменения стилей, но только в случае если сам сайт свёрстан с применением современных техник, в первую очередь flexbox. Если у вас там float'ы или таблицы - то ой, задача по сложности вырастет на пару порядков и почти наверняка не обойдётся без доработки html кода. Если же в этом аспекте всё в порядке и ваш проект построен на flexbox - то основная масса изменений сводится к одной строчке CSS:
    body {
        direction: rtl;
    }

    это "перевернёт" все горизонтальные flexbox'ы и по сути сделает за вас всю основную массу работы по адаптированию сайта к RTL языкам. Конечно, в зависимости от того как именно у вас будет подключаться стиль (отдельные стили для RTL или только патч или всё вместе) реальный селектор может быть, к примеру html[dir=rtl] + body, но это уже детали.

    Тем не менее, даже если flexbox автоматизирует для вас кучу ручного труда - есть целый ряд ситуаций когда необходимы доработки вручную. Основных направлений несколько:

    1. Горизонтальные отступы. Это самая большая часть работы по адаптации т.к. вам необходимо будет "перевернуть" и их тоже, заменив, к примеру, margin-left на margin-right и наоборот, то же самое для padding'а
    2. Абсолютное / относительное позиционирование в горизонтальной плоскости. Речь идёт о свойствах left и right, их, как можно догадаться, тоже необходимо поменять местами
    3. Размеры шрифтов. Поскольку, к примеру, арабский шрифт, обычно выглядит меньше и тоньше чем, к примеру, английский - возможно возникнет потребность увеличить размеры шрифтов (font-size, line-height) и, возможно, подстроить стилизацию (font-weight)
    4. text-align - в ряде ситуаций может потребоваться изменить его на противоположный
    5. :first-child и :last-child, стоит быть внимательным и перепроверить корректность получаемого результата, к примеру если к этим псевдо-элементам добавляется дополнительный отступ - вам, возможно, придётся менять местами и селекторы
    6. Нужно адаптировать визуальные элементы содержащие направление, к примеру стрелки / уголки и т.п. В ряде случаев их можно повернуть, но где-то необходимо будет рисовать отдельную версию


    Если вы используете CSS препроцессоры - то я очень рекомендую написать mixin'ы для рендера этих свойств и адаптировать код таким образом чтобы изменяющиеся стили рендерились через них. Я выложил набор mixin'ов которые использовал в своём проекте, среди них нет mixin'ов для отступов и шрифтов т.к. у меня эти вопросы решаются по-другому, но думаю что там не будет ничего сложного.

    Общая схема адаптации которую я использовал в проекте:
    1. Добавление direction: rtl
    2. "Переворачивание" отступов, это самая большая часть работы т.к. они чаще всего встречаются
    3. Проверка вёрстки, для каждого выпавшего элемента добавление патчей с использованием mixin'ов, ссылку на которые я дал выше
    4. Подбор изменений для шрифтов, адаптация шрифтовых параметров


    Пример выдернутого наудачу из проекта куска для демонстрации патчей, это стиль добавления иконки к строке текста, для RTL языка её нужно было опускать ниже:
    &.with-icon {
        $icon-size: 1.85em;
        @include offset(h $icon-size 0);
    
        &:before {
            // Позиция иконки меняется на противоположную
            @include hpos($left: -1em, $auto: true);
            font-size: $icon-size;
            // Подстраивается высота иконки относительно текста
            @include ltr() {
                top: 45%;
            }
            @include rtl() {
                top: 65%;
                // Стоит обратить внимание что для RTL языков иконка дополнительно переворачивается, 
                // там стрелка, так что работает нормально, но в других местах это может быть по-другому
                transform: translateY(-50%) rotate(180deg);     
            }
        }
    }


    Надеюсь это описание будет полезным :)
    Ответ написан
    2 комментария
  • Как победить самопроизвольное включение ПК сразу после выключения?

    lukoie
    @lukoie
    Поменяйте батарейку на мамке. Или просто выймите ее для теста.
    Ответ написан
    9 комментариев
  • Агрессивное собирание инфы о пользователе через браузерный js?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Сбор инфы - только для троллинга ЦА к покупке вашего продукта (Или нет?!)
    Не нужно тратить время на тех, кто пришёл просто, чтобы потролить вас.

    Как делаю я:
    вешаю краткое назначение продукта и текст:
    "Мы продаём только тем, кому это нужно. Всем остальным - просьба не беспокоить.
    Если Вы заинтересованы и Вам это реально нужно - заполните следующие поля формы:"
    и тут форма на 2 поля и кнопка "Без вопросов".

    Всё остальное - нах не сдалось!
    Задача, не насобирать бесполезной инфы, а сразу получить АДЕКВАТНЫХ ЦЕЛЕВЫХ клиентов, которые купят с вероятностью более 80% ваш РЕАЛЬНО НУЖНЫЙ ПРОДУКТ/УСЛУГУ!
    (Или я что-то путаю?!)

    PS: мне вообще не интересно его: имя, ник, пол, возраст, друзья и кол-во ласт, если он вдруг пингвин) Купил? Отлично! -> Я - в прибыли!
    Ответ написан
    1 комментарий
  • Кто то уже юзал в проектах новое Context Api в 16.3?

    miraage
    @miraage
    Старый прогер
    Context ни в какой Вселенной не является заменой Redux.
    Ответ написан
    2 комментария
  • Что обязательно нужно знать в PHP и что посоветуете выучить?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    > С какими общими понятиями нужно ознакомится?

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

    1. Автоматизированное тестирование.
    1. Автоматное программирование.
    1. DDD.
    1. Функциональное программирование (функции высшего порядка, библиотеки типа https://github.com/tightenco/collect)

    Мастхев книги: https://ru.hexlet.io/pages/recommended-books
    Немного умных слов: https://docs.google.com/spreadsheets/d/e/2PACX-1vS...
    Ответ написан
    6 комментариев
  • Где удобно хранить куски кода?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Ответ написан
    Комментировать
  • Где найти новые детерминированные игры с полной информацией?

    @Mercury13
    Программист на «си с крестами» и не только
    Есть разумеется.
    18 век: https://en.wikipedia.org/wiki/Agon_(game)
    19 век: https://ru.wikipedia.org/wiki/Реверси
    20 век: https://ru.wikipedia.org/wiki/Перебрось_мостик
    20 век: https://ru.wikipedia.org/wiki/Гекс
    20 век: https://en.wikipedia.org/wiki/Quoridor
    21 век: https://ru.wikipedia.org/wiki/Улей_(игра)
    21 век: https://ru.wikipedia.org/wiki/Khet

    Почему таких игр крайне мало?
    1. Мы автоматически отбрасываем часть позиций как неперспективные — потому, чтобы обеспечить ту же просчитываемость, ДИсПИ должна быть намного богаче тайной или случайной. Некоторые механики придётся отбросить, поскольку, например, заимствованием стратегии доказывается, что первый выигрывает.
    2. Из двух игроков разной силы один выигрывает с вероятностью, стремящейся к 100%, игра быстро теряет интерес. А ведь как важен такой интерес для новой игры, которая пока продвигается…
    3. Продвигается исключительно гиками: сложно сыграть, например, папе с дочкой.
    UPD. 4. Крайне сложно сделать, чтобы компьютер косплеил человека. Другими словами, совершал ошибки, свойственные человеку, и при попытках подловить тупой алгоритм ходил как угодно, лишь бы по-другому.

    А насчёт шахмат — от первых упоминаний до современных правил прошло тысячелетие! Догадываетесь, какие плейтесты они прошли, чтобы из банального варгейма стать тем, чем они являются сейчас (хотя тоже, по всей видимости, были популярны в первую очередь у верхушки общества).
    Ответ написан
    5 комментариев
  • Смещаються обьекты в CSS. Как исправить?

    Eridani
    @Eridani
    Мимо проходил
    Подумайте, относительно чего у Вас идет позиционирование шариков, относительно елки или страницы?
    Правильно, относительно документа/
    Во-первых, блок animated должен находится внутрика блока tree, а чтобы шарики позиционировались относительно елки, #tree надо задать position: relative;
    https://jsfiddle.net/u33vou5o/
    Ответ написан
    1 комментарий
  • Что нужно настроить в PhpStorm что бы js код нормально подсвечивался?

    rockon404
    @rockon404
    Frontend Developer
    File --> Preferences --> Languages & Frameworks --> JavaScript
    JavaScript language version выбрать ECMAScript 6 или ту какую собираетесь использовать.

    На MacOS Sierra Preferences находится в меню PhpStorm
    Ответ написан
    Комментировать
  • Корректность работы формы обратной связи ajax?

    rockon404
    @rockon404
    Frontend Developer
    Да, но по-хорошему форма должна сбрасываться:
    document.getElementById("myForm").reset();
    или:
    $('#myForm').trigger("reset");

    По клику отправить, должен появляться progress spinner или другой индикатор процесса отправки и по результатам либо оповещение об успешной отправке и сброс, либо об ошибке без сброса.
    Тогда пользователь не будет переживать, что данные не отправились, или что-то прошло не так.
    Можно для форм с важными данными, в сообщении об успешной отправке цитировать тело обращения и контакты.
    Ответ написан
    5 комментариев
  • Почему не берется в расчет текст?

    Negwereth
    @Negwereth
    lvivcss.com.ua
    Они ведут себя одинаково.

    Во втором случае у вас есть пробел между словами, они переносятся. Если пробела нет - слово неразрывно.
    Ответ написан
    2 комментария