• Как сделать такую анимацию?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Эта штука нынче затмила по популярности particles.js. Постоянно все о ней спрашивают, в том числе и на тостере:
    Можно ли использовать чужой js код?
    Как правильно вытащить код? с этой страницы...
    Ответ написан
    3 комментария
  • Как сделать такую анимацию?

    hzzzzl
    @hzzzzl
    еать залипалово какое :D
    вот скрипт
    colbacolorbar.ru/themes/colba/assets/js/fluidWave.js

    вообще не понимаю что там происходит, вроде яваскрипт, но какой то непростой webGL фреймворк наверно

    UPD вот нашел на гитхабе это, хз может быть это оригинал кода
    https://gist.github.com/peretc001/1444c3df210cc66c...
    Ответ написан
    2 комментария
  • Какие минусы в использовании визуальных редакторов Elementor, PageBuilder и т.п?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    Избыточная верстка и css. Там много генерируется черти как пойми. Но для тех кто исходный код никогда не открывает - норм.

    Вы подсаживаетесь на одно стороннее решение и скорей всего там и останетесь. Лучше для верстки написать своё. Так вы знаете что где и как работает. Почитайте сколько помощи на форумах поддержки по билдерам - близко к нолю. Зато в 90% вы получите ответ что нафига этим пользоваться?

    СЕО - да ему все равно на него. Это удел спец плагинов.

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

    Но если вам надо лендинг собрать - собирайте на нем.
    Выше написали - типа прототип на нем, а потом... И так сойдет...
    Я мало видел сайтов что были на билдере, а потом вдруг их переписали нормально. Дайте мне такую инфу кто владеет - интересно.

    Новый билдер - проект гутенберг. И в нем я сразу увидел кучу проблем, как сторонние разработчики блоков убивали производительность:
    - просто засунули в фронт fontawesome 4.7 версии. ВНИМАНИЕ: ради 3х иконок!!
    - просто засунули в фронт fontawesome 5.* версию и ВНИМАНИЕ это сломало первый вывод с 4.7 версией.

    Короче - разносол в своей красе.

    - еще с гутенбергом - любовь засунуть для простой верстки бутстрап. Нафиг не нужные 90% css будут у вас грузиться.

    Почему так? Потому что у вордпресса нет handle для бутстрапа, скрипта рекапчи, карт и прочих частых и нужных библиотек.

    Так что подходя к сайту на билдере - используйте его апи, но делайте блоки и модули для него сами. Только так вы будете контролировать размер всего что подключается. А потом, как надоест мазохизм - перепишете на чистый код. Только тут дайте знать и опишите свой опыт.
    Ответ написан
    7 комментариев
  • Где взять реальные примеры кода использования ооп в веб-сервисах?

    @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 комментарий
  • Фреймворк для команды с нулевым опытом в ООП?

    iamd503
    @iamd503
    Верстальщик
    У вас в тегах как раз нужный список фреймворков
    Ответ написан
    Комментировать
  • Что означает синтаксис со вопросительным знаком и свойством после?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Ответ написан
    Комментировать
  • Как раскодировать локальный ip?

    DevMan
    @DevMan
    больше похоже на uuid, а не кодированный ip.
    Ответ написан
    Комментировать
  • Считается ли нормальной практикой добавление контента в WP через написание html кода внутри Gutenberg?

    Нормальной считается практика простого добавления контента через редактор Gutenberg, без заморочек о коде и стилях.
    К любому блоку можно добавить собственный css класс в настройках блока, без html кода.
    5d2d8baa8af4a225436757.png
    Цвет и текст в параграфе можно и без css поменять.
    Возможно вам пригодится такой плагин для дополнительных стилей в блоках.
    Ещё рекомендую плагин atomic blocks
    Ответ написан
    4 комментария
  • Какую версию laravel выбрать для долгосрочного проекта?

    4.2, очевидно же
    Ответ написан
    Комментировать
  • Как верстать макет?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    мы верстали подобное, в таких хитровыпупыренных макетах главное понять, где вы, кто вы и где дизайнер и кто он такой)),
    после понимания приходит верное решение.
    мы обошлись ОДНИМ png-спрайтом весом в 12кБ
    не модно, не стильно, не молодежно
    ЗАТО:
    работает
    железобетонно
    проект оплачен
    Ответ написан
    Комментировать
  • Как заполнить массив используя цикл for?

    @McBernar
    Return в цикле for? Что-то новенькое.

    Мой вам совет — прочитайте хотя бы learn.javascript.ru. Не надо пытаться работать с фреймворками, не понимая js.
    Ответ написан
    Комментировать
  • Записать в массив отфильтрованный массив?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Ответ написан
    Комментировать
  • Какой стиль именования переменных в Python более предпочтителен?

    deepblack
    @deepblack Куратор тега Python
    Style Guide for Python Code
    https://www.python.org/dev/peps/pep-0008/
    spoiler
    5d1a0a35ddb3b357700544.png


    Из линтеров могу порекомендовать flake8 и pylint
    Ответ написан
    1 комментарий
  • Объясните почему работает такой код?

    lavezzi1
    @lavezzi1
    Событие инпут нужно для работы с v-model. Его можно вызывать как хотите и на чем хотите.

    https://ru.vuejs.org/v2/guide/components.html#%D0%...
    Ответ написан
    1 комментарий
  • Что это за дополнительные переменные в функции?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Это Type Hints.

    quest_id: int = -1 означает, что аргумент quest_id принимает значения только типа int

    -> list означает, что функция возвращает список.
    Ответ написан
    2 комментария
  • Где скачать калькулятор стоимости сайта?

    @402d
    начинал с бейсика на УКНЦ в 1988
    Все эти калькуляторы по сути
    четыре колонки в экселе
    a - пафосное название
    b - цена за это по вашему мнению
    с - кол-во
    d - формула =c1*b1
    где-то внизу
    Итого формула в ячейке dn сумма ячеек выше в колонке.

    По вкусу можно считать в часах и умножать на почасовую ставку .
    Ответ написан
    Комментировать
  • Как сверстать это html/css. (панельки)?

    Madeas
    @Madeas
    UI / UX Designer, Frontend Developer
    можно так https://codepen.io/andrejsharapov/pen/eXKYBy только стилизуй по другому
    Ответ написан
    Комментировать