• Gmail: DKIM FAILS. Как бороться?

    brusher
    @brusher Автор вопроса
    Фронт-енд разработчик
    Владимир Дубровин, действительно в opendkim.conf был прописан OversignHeaders From (причем по-дефолту).
    Убрал его, h=From:Date:Subject:To:From сменился на h=From:Date:Subject:To
    Но проверить корректность теперь не выходит, кажется, из-за другой непонятной мне причины:
    Received-SPF: softfail (google.com: domain of transitioning photo@annies.ru does not designate 2a00:f940:2:1:2::1ad7 as permitted sender) client-ip=2a00:f940:2:1:2::1ad7;

    Ну а вместе с тем теперь и DMARC отваливается.

    Причем PTR прописан, имеется AAAA-запись, и в SPF прописаны оба ИП:
    @ TXT v=spf1 ip4:5.63.157.61 ip6:2a00:f940:2:1:2:0:0:1ad7 a mx ~all


    (dkimvalidator по прежнему всем доволен)
    Ответ написан
  • Как составлять свое портфолио верстальщика на фрилансе?

    brusher
    @brusher
    Фронт-енд разработчик
    Лучше всего о вас рассказывают ваши работы.
    И, конечно, круче если эти работы — посещаемые ресурсы с чем-то сложным и интересным.
    Но, если даже таких работ нет, то вы можете показать свой профессионализм какими-то необычными и интересными штуками. Например, посмотрите что постят профессионалы на codrops и сделайте нечто подобное. Отправьте туда, разместите в портфолио.

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

    brusher
    @brusher
    Фронт-енд разработчик
    Реализация зависит от вашей архитектуры.
    Я бы реализовал с помощью событий и слушателей:
    нажал на кнопку «газ» → обновил мощность движка → он оповестил слушателей: сцепление → сцепление посмотрело на кпп и на уровень нажатия педали сцепления → передало свое значение в колеса
    а на onUpadate (новый кадр) происходит уже расчет скорости колес (на основании значения полученного от сцепления, трения с землей, воздухом и т.п.)

    Система событий и подписок мне в данном случае нравится куда больше, чем считать все разом на onUpdate, т.к. можно усложнять систему как угодно и легко делать «прокачку» запчастей (это ведь все разные объекты с разными настройками). Ну и локализовать ошибки будет проще.

    p.s.
    Я не профессиональный гейм-девелопер, а только учусь, и с радостью услышал бы совет профессионала, на чьем счету есть пара успешных игр :)
    Ответ написан
    2 комментария
  • Изменить css св-ва input type=image?

    brusher
    @brusher
    Фронт-енд разработчик
    .myAwesomeClass input { border: 10px solid red; }
    Ответ написан
    Комментировать
  • Как отсортировать свойства объекта?

    brusher
    @brusher
    Фронт-енд разработчик
    Получить массив ключей -> отсортировать массив -> засунуть данные ключ-значение в новый объект, в соответствии с массивом.
    var unsortedObject = {
         "Pepper": "Перец",
         "Dill": "Укроп",
         "Tomato": "Томат"
    };
    var sortedObject = sortObject(unsortedObject);
    
    function sortObject(obj) {
     var keys = Object.keys(obj);
     var result = {};
     keys.sort();
     for(var i = 0; i<keys.length; i++) {
       result[keys[i]] = obj[keys[i]];
     }
     return result;
    }
    Ответ написан
    2 комментария
  • Как повесить wasd клавиши на стрелки?

    brusher
    @brusher
    Фронт-енд разработчик
    Так по идеи у вас на стрелках висит некий обработчик (типа playerMove).
    Вешайте его и на WASD. Не нужно городить костыльную неочевидную связь стрелок с WASD. ;)

    Две ссылки в помощь:
    www.html5gamedevs.com/topic/7447-use-both-arrow-ke...
    www.html5gamedevs.com/topic/3199-creating-keyboard-keys
    Ответ написан
    Комментировать
  • Как добавить class к элементу при выполнении условия if?

    brusher
    @brusher
    Фронт-енд разработчик
    Проблема в этом месте: $(this).parent().find('.upload_btn').
    Кнопка не находится, т.к. вы её ищете внутри парента, который удаляете. К тому же она лежит у вас намного выше по дереву.
    Замените на $('.upload_btn') или если таких формочек много на странице, то сначала определите ссылку на кнопку:
    var $btn = $(this).parents('.photo_loader').find('.upload_btn');
    , а затем удаляйте парента и удаляйте/присваивайте класс для $btn.
    Ответ написан
    2 комментария
  • Почему не наносится картинка на канвас?

    brusher
    @brusher
    Фронт-енд разработчик
    Подозреваю, что в момент исполнения скрипта изображение еще не загружено.
    Попробуйте повесить код на событие load у картинки:
    а). либо указав прямо у элемента onload="makeWatermark()",
    б). либо с помощью$('img').on('load', makeWatermark), но в таком случае SRC нужно указывать только после того как повесите обработчик события.
    в). (имхо — лучший вариант) Вообще не грузите в DOM изображения, грузите только ссылку на изображение, а на стороне JS уже создавайте изображение и работайте с ним:
    var img = document.createElement('img');
    img.onload = makeWatermark;
    img.src = "<?=$img_url;?>";

    А для стабильной работы еще и неплохо бы убедиться в том, что вотермарк тоже загружен, и если нет — то загрузить его (аналогичным способом загрузить и вызвать onload с дальнейшей отрисовкой).

    Надеюсь мой совет помог. Успехов! :)
    Ответ написан
    Комментировать