• Почему письмо плохо отображается в десктопном клиенте?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Верстка писем это как отдельный вид мазохизма, между клиентами для писем столько отличий, что вручную очень сложно предсказать все возможные косяки. Я бы порекомендовал для верстки использовать фреймворк, сам остановился на MJML и в целом доволен. Освоить легко, через пару дней уже делал весьма приличные письма с адаптивкой

    5eff78a89d80f643999637.png
    Ответ написан
    2 комментария
  • Можно ли использовать проекты github в коммерческих целях?

    gbg
    @gbg
    Любые ответы на любые вопросы
    У каждого уважающего себя проекта есть лицензия, там все написано.

    Например, Apache 2.0, MIT, BSD - позволяют и коммерческое использование

    Если лицензии нет, то нельзя.
    Ответ написан
    Комментировать
  • Spring Boot deploy?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Я видел вариант, когда внутри докера создается докер, который собирает jar, а потом этот внутренний докер удаляется. Apereo CAS так работает.

    Удобно ли это? Не особо, на самом деле, пушо хочется при старте докера иметь готовое изделие, а не полуфабрикат, который будет еще сам себя собирать полчаса, из которых 20 минут он будет выкачивать тулчейн, который раз в 10 больше готового jar
    Ответ написан
    Комментировать
  • Как выполнить нормализацию адресов?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    После того, как открыли для себя сервис https://dadata.ru/, вообще перестали тратить время и деньги на собственные костыли из граблей. Сервис просто огонь.
    Для нас онлайн режим и скорость обработки не критична, поэтому мы даже уложились в бесплатный пробный тариф.
    Вроде бы у них были решения по установке их ПО в закрытом контуре, а это не что иное, как нужный вам оффлайн. Правда тут уже бесплатно не прокатит точно.

    До дадаты этот вопрос решался жутким нагромождением фильтров, регекспов с заменами и человеко-машинного совокупления.
    Общая схема годится не только для адресов, а вообще любых грязных данных:
    1. Входной датасет сохраняем в CSV и НИКОГДА не меняем.
    2. Обработка многоступенчатая. Каждая ступень состоит из фильтра и модификатора. Фильтр решает применим ли модификатор к каждой записи. Модификатор применяет свою модификацию если фильтр разрешил.
    3. Отладочный выхлоп, который показывает и позволяет быстро просмотреть полностью внесённые изменения.
    4. Каждая ступень должна делать минимальное однотипное улучшение максимально большого числа строк. Цель - каждой ступенью уменьшать разнообразие проблем, увеличивать регулярность, стандартизировать.
    5. При огромных входных датасетах можно сохранять промежуточный выхлоп, но в общем очистка должна выглядеть как пайп их последовательных ступеней обработки.
    - Очень часто бывает, что какая-то ступень незаметно ломает данные, а понимаешь это уже поздно, когда последующие ступени реализованы и отлажены, и сильно опираются на результат ломающей. Благодаря ступенчатости и иммутабельности процесса всегда можно зипнуть текущее состояние с любым предыдущим шагом и очередным фильтром заменить необходимые куски.
    - Часто бывает, что какая-то из ступеней улучшив отдельные записи убирает характерные признаки для фильтрации элемнтов для другой ступени. Благодаря такому инкрементальному процессу можно переставлять ступени местами.
    - При внесении ступенью изменения в запись. ступень должна оставлять свою сигнатуру в отдельном столбце. Удобно для поиска проблем.

    Расскажите подробнее почему не рассматривается онлайн. Заинтриговали.
    Ответ написан
    3 комментария
  • В какую бд лучше всего записывать много логов сайта?

    WinPooh32
    @WinPooh32
    Stack Overflow answer searching expert
    clickhouse, который был специально разработан для яндекс.метрики
    Ответ написан
    3 комментария
  • Какой переводчик лучше использовать для наполнения сайта?

    @boss_lexa
    есть сервис https://inten.to/api-platform/ai/text/translate
    они дают единый api для разных сервисов перевода
    также регулярно пишут о том на какой языковой паре какой переводчик лучше
    https://blog.inten.to/november-2019-mt-landscape-e...
    Ответ написан
    5 комментариев
  • Как отключить перенаправление на HTTPS в nginx для одного адреса?

    Lynn
    @Lynn
    nginx, js, css
    location ~ /vkbot/ {
        root /home/www/vkbot/;
    
        try_files $uri $uri/ /index.php?$args;
        index index.php index.html;
    
        ...
    }


    Тут написано следующее: если в запросе есть (а не начинается, как вы хотите) строка /vkbot/, то выставим root /home/www/vkbot/;. В документации сказано, что uri из запроса добавляется к указанному пути. Итого, в вашем запросе за curl http://swight.live/vkbot/ nginx будет искать файлы в папке /home/www/vkbot/vkbot/. Не то что вы хотели, верно?
    Из-за этого try_files ничего не найдёт и сделает внутренний редирект на (барабанная дробь) /index.php. После чего nginx опять начнёт искать подходящий location и не найдёт ничего лучше чем location / в котором написан редирект.

    Я полагаю, что исправлять надо как-то так:
    location /vkbot/ {
        root /home/www/;
    
        try_files $uri $uri/ /vkbot/index.php?$args;
        index index.php index.html;
    
        ...
    }
    Ответ написан
    2 комментария
  • Такие собеседования в порядке вещей?

    uselessmindYEAH
    @uselessmindYEAH
    Frontback cocaine developer
    Не норма, если люди по-человечески не могут пообщаться, можно не тратить время.
    Ответ написан
    Комментировать
  • Как верстаются блоки со сложным вырезом?

    RAX7
    @RAX7
    на SVG вырез можно сделать хоть в форме котенка
    Ответ написан
    4 комментария
  • Чтобы заниматься blockchain важнее знание физики или информатики?

    Учите оптику. Она поможет при чтении документации.
    Ответ написан
    Комментировать
  • Определение живых пользователей от ботов?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Но к чему еще можно зацепится?
    1. К iframe+canvas+localStorage: выполнился скрипт с инициализацией канваса и локального хранилища через js внутри iframe - не бот с большей степенью вероятности.
    2. Корректная строка UserAgent - скорее, не бот.
    3. IP-адрес: регион IP-адреса и язык контента сайта - совпадают - скорее, не бот.
    4. Более 2-х (3 и более) просмотров страниц подряд "вглубину" с корректым Referer-ом - скорее, не бот.

    Вообще, лучший фильтр - это поведенческая статистика с "весами" по каждому критерию (бот/не бот).
    Ответ написан
    6 комментариев
  • Определение живых пользователей от ботов?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    1. Запрос страниц без картинок (почти однозначно бот)
    2. Время на странице (нужна статистика)
    3. Капча на чувствительные места (регистрация и отправка сообщений)
    4. Регистрация через соц. сети (почти однозначно не бот)
    5. Невидимая кнопка, если перешел сразу бан. (почти однозначно бот)
    6. banner gdpr большого размера и не нажатая кнопка. (почти однозначно бот)
    7. push notification который не нажали на 2 страницах (почти однозначно бот)
    Ответ написан
    7 комментариев
  • Какие есть аналоги select2?

    SmthTo
    @SmthTo Куратор тега HTML
    Все перепёлки мира будут оплакивать мою смерть.
    Лично я использовал https://joshuajohnson.co.uk/Choices в последних проектах. Нет зависимостей, работает быстро.

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

    Ответ написан
    5 комментариев
  • Nginx: connection refused?

    paran0id
    @paran0id
    Умный, но ленивый
    Начнём с начала.
    Он вообще стартует? systemctl status nginx
    Проверяете по тому же адресу, который указан в listen?
    Это не домашний ли провайдер? Они режут 80 порт. NAT нет?
    Если указать listen :80, на 127.0.0.1:80 он доступен?
    Ответ написан
    1 комментарий
  • В чем суть облачных сервисов?

    @EraserKhv
    Системный администратор
    Проще объясню.
    Предположим, гипотетическая ситуация, которой обычно объясняют зачем тебе Облако. - Есть у тебя интернет-магазин плюшевых мишек. Развернул ты сайт у себя на компьютере , который стоит в офисе в кладовке, и все хорошо, посещение сайта 1000 пользователей в день, продаешь ты свои 5 мишек в день, никаких проблем.
    Но тут надвигается 8 марта, и посещаемость сайта увеличивается до 5000 в час и твой компьютер не вывозит ни по процессору, ни по диску, ни по оперативной памяти, ни по пропускной способности интернет канала, службы обрабатывающие HTTP запросы все время отваливаются, интернет-канал забит, жесткий диск молотит, но все происходит все очень медленно, а ты на этом компе еще Z отчет кассовый делаешь в конце дня, а в соседнем цехе усиленно пекли печеньки с предсказаниями в глазури, автомат в ВРУ не выдержал, и отключился вместе со всем зданием и твоим компом. ПО итогу ты к 8му марта продаешь всего 3 медведя, да и еще кассовый отчет для налоговой не сгененрировал. После подобного факапа, ты себе говоришь: "ну на следующий праздник я так не облажаюсь". Выделяешь в офисе помещение под серверную, ставишь серверную стойку, покупаешь 4 сервера полноценных и распараллеливаешь инет запросы, новая система хранения данных, источник бесперебойного питания, 2 кондиционера и интернет канал расширяешь. Итогом к 8му марта следующего года, эта конфигурация выдерживает возросшую нагрузку и ты продаешь 45 медведей к 8му марта, профит ? А вот и нет, вся эта конфигурация нужна тебе в преддверии 8го марта, а остальные, предположим 360 дней, тебе бы хватало однго старого компьютера. А серверная потребляет только электричества на 500 руб в день, а интернет канал, и обслуживание серверов итого дороже!

    Так вот в облаке можно арендовать эти мощности на несколько дней, пока идет самый сенокос, а остальные дни довольствоваться слабенким виртуальным сервером за 300 руб в день.
    Ответ написан
    2 комментария
  • Зачем frontend девелоперу такой большой опыт?

    @bozuriciyu
    Зашел значит на hh.ru вбил


    И я на секундочку задумался о смене направления, не из за того что мне интересно, а просто зп очень большие в моем возрасте


    React Redux javascript все эти Вебпаки и тд это нереально простые вещи не требующие так много опыта


    Если человеку понадобилось столько лет для освоения всего этого он очень глуп и бездарен, развивается медленно.


    Я просто посмотрел доки и понимаю насколько это просто. За неделю можно написать 1-2 проекта максимально использующие все что было изучено, чтобы закрепить знания. Потом почитать на стеке и в других местах основные проблемы которые возникают у других разработчиков, популярные практики и многое другое. И все!


    Так в чем проблема? Вперед, иди разрывай их всех. Или, дай угадаю, ты первым делом сюда прибежал, еще НИЧЕГО не попробовав?

    5d7584d95e90a804618712.png

    Ну не странная ли ситуация? Вместо того чтобы ГЕНИЮ, который за неделю может освоить реакт, всю экосистему, вебпак и тд на уровне исходников и рубить БАБЛО, он бежит на Тостер высмеивать макак-фронтендеров? Это много говорит о нашем герое. Жаль я не смогу проследить ваш процесс "вкатывания"))

    Я не понимаю почему этот вопрос вообще жив. Это не вопрос, это набрасывание говна на вентилятор.
    Ответ написан
    Комментировать
  • Можно ли "подглядывать" Junior'у?

    BBmike
    @BBmike
    Профессионал этот не тот, кто помнит всё, а знает, где это быстро найти.
    Ответ написан
    Комментировать
  • Правильно ли сверстано по БЭМ?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    ihabia, Класс не может разрастаться до безобразия из-за вложенности,
    потому что вложенность всего лишь одна Блок -> Элемент.

    В вашем случае у вас есть косяк в разметке.
    1. Логотип это вполне самостоятельный блок.
    2. Поиск тем более.
    3. Вкладывать прослойки в блоки в принципе допустимо, это не косяк, но когда речь идет лишь о декорации, то вряд ли стоит.

    Итого имеем четыре блока (ну и контейнер, как сущность модульной сетки):

    <header class="header-section">
        <div class="container header">
            <div class="header__logo logo">
                <h2 class="logo__title">APP Design</h2>
                <p class="logo__description">Free PSD Website Template</p>
            </div>
            <form action="" class="header__search search-form">
                <input type="text" placeholder="" class="search-form__field">
                <button class="search-form__button">Search</button>
            </form>
        </div>
    </header>


    .header-section {}
    
    .header {
      &__logo {}
      &__search {}
    }
    
    .logo {
      &__title {}
      &__description {}
    }
    
    .search-form {
      &__field {}
      &__button {}
    }


    Достаточно простая разметка, простые стили, независимые блоки.

    Вторая секция более-менее нормально размечена.
    Ответ написан
  • Что находится под капотом у $.POST?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    Ссылка для тех кто устал от жиквери, но не умеет в JS: youmightnotneedjquery.com/#post
    var request = new XMLHttpRequest();
    request.open('POST', '/my/url', true);
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    request.send(data);
    Ответ написан
    3 комментария