• Как сделать анонимный домен в 2024?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Что значит "анонимный"? Домен обычно сам по себе не существует (хотя и может), его обычно привязывают к сайту. И тут уже начинаются варианты, зачем тебе анонимность:
    - ты собираешься развернуть порносайт. Тогда тебе дорога в локации, где порно не запрещено, в Нидерланды например - берешь там хостинг, там же берешь домен.
    - ты собираешься вляпаться в политоту. Тогда тебе дорога в те локации, которые враждебны той локации, которую ты собрался обсерать - берешь там хостинг, и там же берешь домен.
    (как ты собрался оплачивать там хостинг - это другой вопрос)

    Анонимности в Сети не существует. Существует возможность к ней приблизиться, но это дорого и неудобно.
    Ответ написан
    2 комментария
  • Почему у стрелочной функции из объекта контекст виндоу?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    На learn.javascript, например, неплохо написали:
    Стрелка => ничего не привязывает. У функции просто нет this.
    При получении значения this – оно, как обычная переменная, берётся из внешнего лексического окружения.


    В вашем примере с литералом объекта можно добавить для понимания:
    const obj = {
      w() {
        console.log('w', this);
      },
      x: function () {
        console.log('x', this);
      },
      y: this,
      z: () => {
        console.log('z', this);
      },
    };
    
    obj.w(); // obj
    obj.x(); // obj
    console.log('y', obj.y); // Window
    obj.z(); // Window


    Запись литерала объекта не создаёт свой контекст: на момент записи this тот же, что и снаружи:
    const a = this; // Window
    const obj = {
      b: this, // тоже Window 
    }
    
    a === obj.b // true
    Ответ написан
    1 комментарий
  • VueJS: где лучше хранить css, в компонентах .vue или main.css?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    В Vue приложении используем препроцессор (scss). Кроме того используем внешние пакеты для вертикального ритма и сетки.

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

    Вариант импортировать scss-файл с определениями в каждом компоненте сразу откинули, ибо люди мы ленивые.

    Что делаем:
    Подключаем в точке входа (main.js) основной стилевой файл:
    import '@/styles/main.scss';
    import Vue from 'vue';
    //...

    В нем подключаем всякое-разное-глобальное-базовое:
    @import "base/normalize";
    @import "base/init";
    @import "base/typography";
    @import "base/code";
    @import "base/links";
    @import "base/tables";
    @import "base/buttons";
    @import "base/control-group";
    @import "base/general-form";
    @import "parts/transitions";
    ...

    Далаем два файла: env-development.scss и env-production.scss
    $NODE_ENV: development;
    @import "cfg-vars";

    $NODE_ENV: production;
    @import "cfg-vars";

    Переменная $NODE_ENV нам нужно. чтобы управлять стилями в зависимости от окружения.
    Дальше в cfg-vars.scss подключаем/пишем все необходимые глобальные конфиги
    $DEV_MODE: $NODE_ENV == development;
    $MAX_INT32: 2147483647;
    
    @import "cfg-vrhythm";
    @import "cfg-grid";
    @import "../../../node_modules/vrhythm/source/vrhythm";
    @import "../../../node_modules/bs-grid-system/source/scss/bs-grid";
    @import "../mixins";
    @import "cfg-z-indexes";
    
    $wt-family-base: "Open Sans", sans-serif;
    $wt-family-head: "Roboto Slab", serif;
    $font-family-monospace:  "Fira Code", Menlo, Monaco, Consolas, "Courier New", monospace;
    
    //==
    //== Color palette
    //== ======================================= ==//
    
    $palette-light-blue: #3c8dbc; // Primary
    $palette-red       : #dd4b39; // Danger
    $palette-green     : #00a65a; // Success
    $palette-aqua      : #00c0ef; // Info
    $palette-yellow    : #f39c12; // Warning
    
    ...


    Почти всё готово. Осталось только автоматически подключить эти конфиги к сборке.
    Идём в vue.config.js и добавляем секцию css:
    const NODE_ENV = process.env.NODE_ENV === 'development'
        ? 'development'
        : 'production';
    //...
    module.exports = {
        //...
        css: {
            extract: NODE_ENV === 'production',
            loaderOptions: {
                sass: {
                    data: `@import "@/styles/config/env-${NODE_ENV}.scss";`,
                },
            },
        },
    };


    Теперь мы спокойно пишем стили компонентов на scss прямо vue-файлах, и оставляем возможность какие-то стили писать в отдельных файлах.

    Enjoy!
    Ответ написан
    6 комментариев
  • Где взять реальные примеры кода использования ооп в веб-сервисах?

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

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

    Сначала бизнес описывает боль которую решает продукт
    В чем боль? Бизнес раньше продавал газеты, а теперь хочет свою интернет газету.
    1. Они не хотят тратить деньги на печать, а просто делать посты новостей и статьи.
    2. Они не хотят платить деньги на транспортные расходы развозить газеты, а делать рассылки на электронную почту
    3. Они хотят получать обратную связь (комментарии)
    этого достаточно для примера.

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

    Затем описываются сущности этого продукта и действующие лица в этом продукте
    Что мы можем понять из этого? Какие у нас есть сущности?
    1. пост - новость или статья на сайте.
    1.1. На этом этапе выясняем у бизнеса в чем отличие новости от статьи.
    Бизнес говорит: у новости (например) есть только одна картинка, текст.
    У статьи есть так же текст но картинок может быть несколько, так же не может быть комментариев.
    Бизнес забыл про то что в дизайне есть еще и дата, тут уже додумывает сам программист взглянув на макеты.
    В итоге у нас получается одна абстрактная модель Post и две ее реализующие: Article и News.

    public abstract class Post
        {
            protected Post(string text, int writerId)
            {
                Text = text;
                CreationDate = DateTime.Now;
                WriterId = writerId;
            }
    
            public int Id { get; set; }
            public string Text { get; private set; }
            public DateTime CreationDate { get; private set; }
            //Идентификатор писателя статьи\новости
            public int WriterId { get; private set; }
    
            //Автоматически подтягиваемая из базы модель писателя через ORM по WriterId
            public virtual Writer Writer { get; set; }
    
        }
    
        public class Article : Post
        {
            public Picture[] Pictures { get; private set; }
    
            public Article(string text, int writerId, Picture[] pictures) : base(text, writerId)
            {
                Pictures = pictures;
            }
        }
    
        public class News : Post
        {
            public Picture Picture { get; }
            
            //Массив комментариев к посту
            // private set -- говорит о том что массив инкапсулирован
            // и управлять массивом можно только через метод AddComment
            public List<Commentary> Commentaries { get; private set; }
    
            public News(string text, int writerId, Picture picture) : base(text, writerId)
            {
                Picture = picture;
            }
    
            public void AddComment(Commentary commentary)
            {
                Commentaries.Add(commentary);
            }
        }


    Далее у нас есть ролевые модели и у каждого своя бизнес логика.
    2. Подписчик - получатель новостей. Бизнес хочет что бы каждый зареганый юзер автоматически стал подписчиком. Такого в реальном мире не будет, нельзя, но для примера норм.
    3. Писатель - тот кто пишет статьи\новости.

    Две эти модели отличаются между собой только ролью и наличием у подписчика поля email. По этому приведем вот такие ООП модели

    public abstract class User
        {
            public int Id { get; set; }
            public string Username { get; private set; }
            public string Role { get; private set; }
            
            protected User(string role, string username)
            {
                Role = role;
                Username = username;
            }
        }
    
        public class Subscriber : User
        {
            public string Email { get; private set; }
            
            public Subscriber(string username, string email) : base(nameof(Subscriber), username)
            {
                Email = email;
            }
        }
    
        public class Writer : User
        {
            public Writer(string username) : base(nameof(Writer), username)
            {
            }
        }


    Поле пароль опущено, тут много чего опущено для простоты восприятия.

    3. Комментарий - обратная связь от юзера в посте. При чем хочу заметить от ЮЗЕРА, бизнес говорит что писать могут как и подписчик так и писатель

    public class Commentary
        {
            public int Id { get; set; }
            public string CommentText { get; private set; }
            public int UserId { get; private set; }
            
            public virtual User User { get; private set; }
            
            public DateTime CommentCreationDate { get; private set; } 
            
            public Commentary(int userId, string commentText)
            {
                UserId = userId;
                CommentText = commentText;
                CommentCreationDate = DateTime.Now;
            }
        }


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

    Прошу прощения что не PHP, но C# тоже C подобный, так что проблем с чтением на уровне моделей быть не должно.

    Одна из функций ООП -- что бы программисты понимали бизнес.
    Ну и человеку прозе описывать поведение реального мира объектами и как эти объекты между собой взаимодействуют.
    Есть целые методологии разработки ПО такие как DDD, где вообще ядро кода пишется на копароративном языке и жестко соблюдаются правила названия моделей и описания алгоритмов бизнес процессов бизнеса. Код получается самодокументированным. Были случаи когда ядро по DDD писали даже на русском, потому что бизнес большой, а новичкам, кто приходил кодить в фирму, было быстрее и проще вкатиться в понимание прикладной практики бизнеса и понять по коду как бизнес устроен на разных слоях.
    Ответ написан
    1 комментарий
  • Выбор между Битрикс и Drupal

    @prohardware
    Приветствую!
    Руководитель компании, 10 лет опыта работы с друпалом, 7 лет опыта работы с битриксом. Официальный участник Drupal.Org с сертификацией разработчика. Рекомендуемый партнер битрикса + в топ 5 в рейтинге хостингов для Битрикс.
    Мнение вполне можно считать объективным хотя бы за количество решенных задач по обеим системам и выслугу лет =)

    1. Нельзя сравнивать эти системы. У них разный принцип. Битрикс - это готовая коробочное решение для быстрого запуска сайта заточенного для бизнеса в РФ. Drupal - это вообще CMF, то-есть можно сделать вообще все что угодно исходя из гигантского набора модулей. Готовые решения есть, но не для РФ.
    2. Масштабирование и развитие сайтов: Битрикс - тяжело кастомизировать ф-ционал под определенные требования заказчиков. Какая-нибудь ерунда может отнять кучу времени на реализацию и потребовать обходных путей т.к. API у Битрикса не самое продуманное. Drupal - легко делать специфичные кастомные решения. Никаких проблем с дальнейшим обслуживанием.
    3. Обновление ядра: Битрикс - одной кнопкой, но если все разработки делались по регламенту, иначе сайт можно убить. Drupal - одной кнопкой и еще выбрать, что именно обновлять + выше стабильность.
    4. 1С: Битрикс - есть БАЗОВАЯ интеграция, которую все потом допиливают, почему об этом все молчат?) Drupal - нет готовой интеграции, но мы свою для клиентов написали и развиваем и поддерживать проще.
    5. Безопасность: Битрикс - хорошая, Drupal - хорошая. Суть в том, что бы надежно хранить пароли и вовремя обновлять ядро.
    6. Маркетинг: Битрикс для РФ, Drupal - для всего остального мира. Сообщества нельзя сравнить по размеру, Drupal в таком сравнении выносит Битрикс мощнейшим ударом т.к. система интернациональная.
    7. Готовые решения и компоненты (модули): Битрикс - толком не контролируют разработчиков в маркетплейсе, решения разработаны так, что иногда кажется, что работаешь не с системой за 50к рублей, а с бесплатной джумлой. Drupal - контроль модулей по принципу Apple AppStore т.е. сырой или недоработанный модуль (решение) не будет находиться в основном каталоге, все честно описано, хочешь ставь и дорабатывай или жди стабильный релиз.
    8. Скорость работы: мы в том числе и хостер, поэтому могу много рассказать про обе системы, но остановлюсь на фактах. Для Битрикс у нас отдельный кластер серверов, на каждой ноде размещаем не более 50 сайтов, иначе падает производительность. На Drupal мы размещаем меньше сайтов, но в таких же условиях может размещаться в 2 раза больше сайтов. Дело не в ядре, а в кривых руках якобы сертифицированных разработчиков Битрикс (сертификаты покупаются за копейки).
    9. Если нужно дешево, по-быстрому состряпать красивый и понятный интернет-магазин на 1-2 года и потом забыть про него (не дорабатывать) - берите Битрикс. Drupal для более серьезных проектов.
    Ответ написан
    Комментировать
  • Как создать превью страницы сайта?

    AItF4
    @AItF4
    Помог ответ? Отметь решением.
    Геннадий Уваров, чтобы это сделать, вам нужно добавить в head страницы теги:

    <meta property="og:title" content="">
    <meta property="og:site_name" content="">
    <meta property="og:url" content="">
    <meta property="og:description" content="">
    <meta property="og:image" content="">

    Далее нужно каждому мета-тегу заполнить параметр content=""

    За что отвечает каждый тег:
    og:title - заглавие страницы, он же тайтл. Можете скопировать из тега title.
    og:site_name - название сайта.
    og:url - ссылка страницы, где вы добавляете этот код. Если это однастраничник, то это просто ссылка на главную сайта. Если сайт на CMS или самописный и у него много страниц, то вам придется для каждой указать свой тег, со своей ссылкой.
    og:description - описание страницы. Можете скопировать из тега description для страницы, на которую добавляете теги.
    og:image - ссылка на картинку, что характеризует страницу. Можете указать ссылку на лого сайта, или нарисовать конкретную картинку для этих целей.
    Ответ написан
    2 комментария
  • Лучший вариант создания мобильного меню на сайте?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    1. Меню должно быть одно - финты с двумя меню для разных устройств - признак криворучки.
    2. Отображение менять через и только и исключительно через CSS+media.

    Хотя судя по тексту вопроса, знаний три процента, тогда в репозитории искать среди 624'498 плагинов мобильных меню, хуже не будет)))
    Ответ написан
    3 комментария
  • Как устранить зазоры при переводе вектора из Illustrator в Photoshop?

    RAX7
    @RAX7
    Выравнивание по пиксельной сетке включите в иллюстраторе.
    5c1c6d24b1db5394463127.png
    Ответ написан
    Комментировать
  • Тестовое задание (Junior Frontend), приемлемое ли?

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

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

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    но которую можно реализовать и с помощью css, и с помощью javascript...
    ваше мнение хотел услышать

    Мне самому нравится делать все на CSS, но... Если анимация должна быть интерактивной и нужно ее останавливать в процессе, откатывать в изначальное положение и.т.д., или некоторые ее части зависят от данных (в широком смысле - это и движение по сложной траектории, и построение графиков и.т.д.) и их проще рассчитать скриптом, чем подбирать коэффициенты в CSS keyframes, то JS будет лучшим выбором. Если это последовательность мало связанных между собой изменений, то опять же скрипты почти всегда будет проще реализовать. Если речь идет о CSS-анимациях с фильтрами (особенно SVG-фильтрами), то можно влететь в очень сильные проблемы с производительностью на слабом железе. И никакие хаки с GPU тут не помогут - все равно будет тормозить. В такой ситуации может иметь смысл не просто писать на JS, но и подключить WebGL и все делать руками на шейдерах.

    В остальных случаях стоит смотреть по ситуации - разные :hover / :focus эффекты обычно легко реализуются на CSS, и, если это так, то зачем что-то придумывать? CSS в последнее время очень даже неплох. Но если, например, в проекте вся анимация делается на JS, то может иметь смысл продолжать делать так же, сохраняя единообразие в коде.
    Ответ написан
    Комментировать
  • Как сделать видимый блок, который невидим для мыши?

    rockon404
    @rockon404
    Frontend Developer
    pointer-events: none;
    Ответ написан
    Комментировать
  • Какие проблемы решает качественный дизайн сайта?

    @Insayt
    Ну тут надо уточнить, что дизайн сайтов/приложений не является продуктом. Это услуга.
    "Картошка" - это продукт. "Доставка картошки" - это услуга. Вы предоставляете услуги, соответственно ставить вопросы надо исходя из понимая этого.

    Бизнес выбирает поставщика услуг по нескольким пунктам:
    1. Доступность - важно что бы было легко вас найти.
    2. Понимание проблем клиента - важно что бы поставщик услуг четко понимал как его деятельность скажется на нашем бизнесе.
    3. Скорость реакции сотрудников и их вежливость - тут думаю все понятно, если на email отвечают неделями и на от*бись, то такой поставщик услуг не получит заказ.


    В контексте вашего вопроса речь идёт о "Понимании проблем клиента".
    И тут важнее не написать большой список, а выбрать конкретный пункт и давить на него. Объясню:

    1. Увеличение продаж - на этот пункт вы влияете очень косвенно (ниже объясню почему). Потребитель больше будет смотреть на цену и скорость доставки, чем на форму кнопочки "Перейти в корзину".
    2. Привлечение внимания - это тоже не ваша работа. Привлекают внимание маркетологи. Клиент даст рекламу в директ, и она будет привлекать внимание. Если вы занимаетесь дизайном рекламных баннеров, то тогда можно говорить о привлечении внимания, но в контексте вашей деятельности вы привлечением внимания к продукту/услуге заказчика не занимаетесь.
    3. Большая конкурентоспособность/отстройка от конкурентов - это тоже не про вас. Конкурентоспособность никак не соотносится с визуальной составляющей. Вы можете сделать идеальную упаковку для пиццы, но если её везут 3 часа, то никакой конкурентоспособности быть не может.
    Отстройка от конкурентов - это тоже не про вас. Немного погуглите про то что такое "отстройка от конкурентов", и поймете это. Отстраиваются на уровне позиционирования и бизнес процессов. Например вы открыли магазин продуктов возле дома. Через пол года рядом открывается пятерочка. Вы начинаете проседать по доходам, потому что пятерка дает лучшую выходную цену для клиента, и тогда вы решаете отстроится от конкурента, убираете весь ассортимент и становитесь магазином "Колбасы от Васи". И расставляете на прилавке 1 вид продукта, но в широком ассортименте, который пятерочка никак не может себе позволить, потому что им не выгодно иметь широкий ассортимент одной товарной позиции. Вот это и есть отстройка.

    А теперь к важному. Продавайте "Повышение конверсии". И только это.
    Бизнес делает рекламу, тратит на это деньги, и тут появляетесь вы и говорите, мы можем сделать новый дизайн вашего сайта, уменьшить "боль" потребителя от использования, что повысит вашу конверсию на N процентов + увеличит кол-во повторных заказов от существующих клиентов. Повышение конверсии даст большую эффективность вашим рекламным затратам, потому что вы можете потратить 100500 миллионов денег, но если вся реклама будет вести на непродуманный, некрасивый и абсолютно неюзабельный лендинг - ваши деньги вылетят в трубу. Такая постановка вопроса будет очень понятна любому бизнесу.

    Так что вывод - переимуйте абстрактный пункт "Увеличение продаж" в более конкретный "Увеличение конверсии", и продавайте его.
    Ответ написан
    1 комментарий
  • PDF портит качество логотипа. Как быть?

    lukoie
    @lukoie
    подождите, там только линии или и обводка имеется?
    Вы удалили лишние обьекты после экспанд эпириенс?
    возьмите рядом нарисуйте просто две линии. одну обычной линией с толщиной, скажем, 2пт, и вторую такую же с обводкой и экспадните ее. что в пдф покажет?
    еще гляньте в альтернативном просмотрщике, например Foxit. Так Вы узнаете чья проблема - может у Вас там толщина ~"хейрлайн" и акробат ВЬЮЕР так ее отображает на выводе.
    Ответ написан
  • И снова курсы веб разработки?

    e-antonov
    @e-antonov
    Сначала пройдите бесплатные курсы на https://htmlacademy.ru/
    Потом пройдите платный интенсив либо там же, либо на https://loftschool.com/
    На вашем месте я бы выбрал интенсив от https://loftschool.com/ либо попроще https://loftschool.com/course/web-beginner либо посложнее https://loftschool.com/course/web-development в зависимости от текущего уровня знаний.

    К тому моменту как вы окончите интенсив у вас будет определенное знание html, css, препроцессоров, сборщиков, jquery и javascript + как минимум один выпускной проект в портфолио на гитхабе.

    Далее вы можете брать уже готовые макеты, либо на этих ресурсах, либо где-то еще и сделать себе еще 2-3 готовых проекта для портфолио. Чтобы кто-то их проверял - вы можете договориться по сходной цене с вашим наставником на интенсиве, я думаю он не откажется.

    В результате со своими знаниями и опытом надо устраиваться на работу. Желательно не фриланс. Ибо на фрилансе вас никто не контролирует, никто не поучает, не с кого взять пример. Развитие там минимальное.

    Как только вы устроились на работу - работайте изо всей силы, впитывайте то, чему вас учат, читайте книги, читайте статьи на профильных ресурсах, изучайте технологии, развивайтесь, растите.

    Удачи и успехов.
    Ответ написан
    Комментировать
  • Inputmask jquery как настроить маску для телефона?

    gibson_dev
    @gibson_dev
    8(999) 999-9999
    Ответ написан
    Комментировать
  • Как научится выражать свои мысли?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Это нормально, другие делают вид что поняли, кивают, а потом выясняется что они не до конца все поняли. Но тогда уже поздно. Лучше сразу дать понять что ты не до конца понимаешь. Переспросить, переформулировать.
    Я вообще по жизни угараю с совещаний - всегда такое впечатление что все все поняли - но оказывается что никто ничего до конца не понял, все просто покивали головами чтобы не казаться дураками. Никогда не надо стесняться спрашивать, хоть это и не всегда удобно. Как говорят японцы: "Спросить — стыдно на минуту, а не знать — стыд на всю жизнь"
    Не стесняйтесь тормозить разговор. Типа:
    - Можно я перескажу своими словами как я это понял.
    - Я хотел бы лучше понять для чего это нужно? Какую проблему это решает?
    Особенно если вы новичок никто не будет предьявлять к вам завышенных требований, а кто-то даже наборот отметит тягу к знаниям. Нет ничего хуже когда человек до конца не разбираясь делает вид что он шарит и ему все по-плечу (Эффект Даннига-Крюгера).

    Есть еще т.н. проблема XY xyproblem.info - обязательно ознакомьтесь. Я однажды с удивлением выяснил, что страдаю этим синдромом. Не обьясняю контекст задачи, а задаю конкретный вопрос. Это ставит людей в тупик, и в этом нет ничего хорошего. Со временем я приучил себя обьяснять проблему так чтобы мне давали развернутый ответ. Главное не бояться перегрузить людей деталями. Они, эти детали, как правило сильно меняют дело.
    Вот шаблон с контекстом:
    - Я делаю ... у меня есть ... и для того чтобы сделать ... я использую ... . Но если мне нужно ..., например чтобы .... то этот подход не работает. Как можно сделать лучше?

    Также я приучил себя всегда стараться дать пример, на примере всегда быстрее и четче доходит. И сразу есть контекст на котором можно проверить ответ. Не жалейте времени составляя хороший пример. Хороший пример всегда можно горизонтально и вертикально расширить, типа:
    - А что если у меня этих ... будет N штук.
    - А что если у нас нет прямого доступа к .... Ну, например, оно управляется через ...?
    Прямо к примеру так и припишите все дополнительные расширяющие вопросы. Перечитайте еще раз. Уберите ненужное. Что-то отвалится само.

    Иногда я использую то, что я называю отложенным мышлением (deferred thinking). В том случае если нет времени на обсуждение. Я задаю вопрос, и просто запоминаю ответ, и обдумываю его потом. А человеку говорю "Спасибо за наводку, я еще раз все прокручу в голове. Если мне еще что-то будет не понятно я приду снова, окей?" Обычно никто не отказывает. Главное предупредить что ты возможно придешь еще раз.
    Ответ написан
    2 комментария
  • Оцените вёрстку макета?

    @ned4ded
    Верстка, Фронтенд
    Привет из htmlacademy, тоже верстал этот макет )
    Индекс:

    1) Иконки на дашборде расположены неровно.

    2) Едет меню каталога товаров при переполнении.

    3) Спецификация товара, сделанная через флекс, не имеет свойства wrap, из-за чего при переполнении едет верстка.

    4) Псевдоэлемент after для кнопки Подробнее находится не по центру в firefox.

    5) В email форме нет стилизации бэкграунда для инпутов.

    6) Футер, по-моему, должен быть растянутым в края (как и фон для блока services, которого у тебя нет).

    Страница каталога:

    7) бэкграунд для фильтров не соответствует макету и должен быть в края.

    8) Bluetooth радиокнопки сделаны неровно.

    9) Цены под карточками сделаны неровно.

    10) При наведении на карточку товара должна становится прозрачной кратинка, а не серый фон + позиционирование неровное, какая-то линия на каждой карточкой по наведению.

    11) Пагинация без заливки.

    12) Селфи-палка «Следуй за мной» 4900 руь.

    13) И почти для всех блоков: ты используешь display:flex, но располагаешь элементы все равно используя margin. Да, в некоторых местах это необходимо, но, например, в меню каталог товаров, в info секции можно нормально расположить блоки, используя свойства флекс-боксов. А в каталоге (в лучшем месте для использования флекса), у тебя inline-block )

    14) В некоторых местах у тебя используются section теги, тогда как являются они, по сути, обычными дивами.

    Сколько времени тебе осталось до сдачи работы?) Я свою, помню, допиливал в последние минуты перед дедлайном ^^
    Ответ написан
    2 комментария
  • Как верстать письма для самых распространенных почтовых сервисов?

    DjailinVasu
    @DjailinVasu
    Верстальщик, подрастающий фронтендер
    Я не очень давно писала такое мини-руководство для верстки рассылок.

    Рассылку лучше всего сначала верстать ручками в файлике .html.
    Из статьи последней редакции 2015 года, заготовка файла такая:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
    <head>
     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    </head>
    <body bgcolor="#ffffff" style="padding:0;margin:0;">
    	    …
    	</body>
    </html>

    Источник https://mindbox.fogbugz.com/?W95

    Дальше мы забываем про тэг<body>, его параметры будут проигнорированы почтовыми сервисами (в лучшем случае), забываем про блочную верстку и вообще про существование тэга <div>, возвращаемся в 1996-98 год и вспоминаем табличную верстку.
    Конечно.. Можно использовать div, но стоит ли? Учитывая, что где-то они будут игнориться. Хотя есть вот прием - оборачивание картинки в тэг div, чтобы outlook, не делал бы ей лишние отступы. Но по-моему лучше картинке задать display: block;

    Весь дизайн-макет мысленно (или графически) разбиваем на ячейки одной таблицы, или на вложенные таблицы, насколько хватит воображения.

    Для того, чтобы задать фон для будущей рассылки лучше использовать таблицу с одной ячейкой, шириной в 100%, внутри которой уже верстать основную таблицу рассылки.

    Стили
    Про хэдерные стили через тэг <style>тоже забываем - только инлайновые стили.
    Важно помнить, что некоторые почтовики удаляют все стили, которые прописаны после недопустимого в нем (яндекс) или вообще удаляют весь атрибут style, если в нем прописан хотя бы один недопустимый стиль (гмеил).
    Подробнее об обработке стилей почтовыми клиентами смотреть тут: habrahabr.ru/post/146414
    Обязательно просматривать таблицу восприятия почтовиками стилей тут: https://www.campaignmonitor.com/css/

    Обнуляем таблицы!
    <table border="0" cellpadding="0" cellspacing="0" style="margin:0; padding:0">

    Этот набор атрибутов запомнили сугубо и тригубо.

    Шрифты и текст
    Забываем про красивые дизайнерские шрифты и используем стандартные безопасные: www.wearymax.ru/webmasters/fonts
    Лучше не использовать тэги<p>и <font>. Весь текст задаем через <span>.

    Фоновые картинки и не только фоновые
    Забываем про background-image, если хотим, чтобы пользователи Outlook тоже могли насладиться красотой. Если все-таки фоновые картинки нужны и без них никак, то нужно назначить альтернативный цвет фона.

    Тэгу img не забываем прописывать следующие атрибуты:
    <img src="..." width="..." height="..." border="0" alt="" />

    И лучше всего к этому: style=" line-height:0; display: block "
    Для картинок display: block не дает Outlook-у добавлять им свои отступы.
    Атрибуты align, vspace и hspace лучше не использовать для этого тэга вообще.
    Картинки (на мой взгляд) лучше подгружать по абсолютным адресам с сервера. Но лучше про варианты погрузки картинок почитать в этой статье: habrahabr.ru/company/sibirix/blog/114472

    Цвета
    Никаких сокращенных обозначений HEX цветов, только шестью значениями!
    Цвет фона лучше всего задавать атрибутами background="" или bgcolor="" , есть некоторые отшибленные почтовики, которые будут игнорировать фон, заданный стилем (но их не много, так что.. ).

    Отступы и выравнивания
    Есть такое утверждение, что вертикальные отступы рекомендуется задавать не пустыми ячейками с прописанной шириной, а вкладывать в них нулевые (прозрачные) картинки. Желательно хотя бы 10pxна10px, и самим картинкам задавать ширину нужного отступа. Другие же говорят, что это наоборот плохо, потому что the bat, например, заливает прозрачные картинки черным цветов.
    Я картинки для отступов не использую. Просто ячейки с заданной высотой. Пока везде работало.

    Горизонтальные отступы нужно задавать ячейками таблицы жестко, четкой фиксированной шириной.

    Забыли про float. Он под запретом, будет игнорироваться большинством почтовых сервисов.

    В принципе, в одной из статей написано, что мы можем (уже сейчас!) использовать для отступов внутри ячеек padding и его производные. Это работает для самых популярных почтовых клиентов. Но все же, если учитывать большинство статей рунета, использовать лучше с осторожностью. (Но я юзаю!)

    Ссылки
    Не забываем прописывать target="_blank", не забываем, что значения # у атрибута src быть не должно.
    Всегда задаем цвет, шрифт, размер шрифта, line-height, -webkit-text-size-adjust:none(это свойство запрещает увеличивать размер шрифта айфонам и айпадам).
    Про "Якоря" забываем.

    Тестируем рассылку:
    На данный момент, нормальных инструментов для простого тестирования рассылок нет
    А может и есть, но все платное и лично я с этим не разобралась.
    Примеры можно посмотреть здесь: www.cossa.ru/digdog/48567

    Самое простое и правильное решение - находим сервис бесплатной отправки сообщений, создаем себе аккаунты на как можно большем кол-ве почтовиков, и шлем себе любимому рассылку на все адреса. Потом смотрим, тестим, наслаждаемся.
    И пытаемся сами понять где же мы накосячили, и просматриваем статьи из-за чего такой косяк может всплыть.
    Я выбрала для себя https://sendpulse.com/ru/
    Вот рассылка которая там лежит archive.sendpulse.com/bd6092af/?_ga=1.158251578.12...

    После регистрации сначала надо зайти в раздел Адресные книги, добавить все свои адреса.

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

    Это вот примерное резюме из всех прочитанных мною статей и моего личного опыта.
    Ответ написан
    Комментировать
  • Как подогнать psd для верстки?

    sfi0zy
    @sfi0zy Куратор тега Вёрстка
    Creative frontend developer
    Шаблон сделан на разрешение 3360х12078. Можно ли как нибудь изменить это разрешение до необходимого 1920х1014?

    А почему вы решили, что там должно быть 1920? Не глядя кажется, что он в ширину не 1920 должен быть, а 3360/2=1680. А сделан в два раза больше только ради картинок для ретины. В чем проблема при верстке все размеры делать в 2 раза меньше? Тем более, что если макет нормальный, то многообразия размеров там не будет. Но если вы все же хотите поменять разрешение - вам нужно скачать полноценный фотошоп и поменять его там, assets не для этого предназначен.
    Ответ написан
    Комментировать