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

    @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 комментарий
  • Легально ли использовать видео с youtube на своем сайте?

    Kalombyr
    @Kalombyr
    Вроде как если автор не хочет, что бы его контент мог воспроизводиться на других сайтах, то выставляет соответствующий запрет в настройках (в том числе для конкретного домена). Так что если по ссылке поделиться работает, то можно.
    Ответ написан
    3 комментария
  • Зачем использовать ajax, если есть вебсокеты?

    Разные технологии под разные задачи. Сравнивать некорректно. Вы же не будете делать отдельный вебсокет под простую отправку форму ос или аяксом долбить сервак чтобы получить новые сообщения в чатике?
    Ответ написан
    Комментировать
  • Тестовое задание (Junior Frontend), приемлемое ли?

    @FullStackAlex
    Веб-разработчик, электрик, кочевник
    У меня 4-ёх летний стаж верстки и 2,5 года профессиональной деятельности как фрилансер (должен каждый месяц по несколько раз продавать свои услуги клиентам).

    Технически тест простой. По объёму - эксплаутация наивных чукотских юнош.

    Если фирма супер пупер крутая и зарплата как в Silicon Valley - почему бы и нет?

    Но если фирма ни чем не особенная (для вас) и даже не известно о точной зарплате - я бы не парился.

    Я лично с самого начала моей профессиональной деятельности (то есть 2,5 года назад) имел три личных блога которые сам спрограммировал на основе WordPress и их презентировал если клиенты интересовались моим опытом работы. Позже (1,5 года назад) я за недельку сколотил себе простой но со всякими приколами (gsap анмиация и SPA style) сайт и с тех пор у меня больше не было проблем с доказательством своего опыта.

    То есть, лучше сколотить какой нибудь личный проект и презентировать его когда будут интересоваться вашими способностями. А если этого кому то будет не достаточно - «давай до свидания»
    Ответ написан
    Комментировать
  • Тестовое задание (Junior Frontend), приемлемое ли?

    @stratosmi
    Имхо, вы путаете:

    Junior
    и
    Trainee

    Для джуна задание нормальное. Более чем несложное.

    А то, как вы к нему относитесь боязливо - скорее выдает трейни.

    Радует что нет адаптива


    И это вы пишите в конце второго десятилетия 21 века?
    Когда трафик со смартфонов давно превысил 60% ?
    Ответ написан
    Комментировать
  • Тестовое задание (Junior Frontend), приемлемое ли?

    bootd
    @bootd Куратор тега CSS
    Гугли и ты откроешь врата знаний!
    При чём тут какая-то связка с php? Как php вообще относится к вёрстке? Если вы там адаптивности боитесь, то, лично моё мнение, вам ещё нужно подтянуть знания и вы себя в оценке переоценили))

    Что насчёт самого макета, то я бы сказал, слишком лёгкий. Чё тут делать то? Карту вставить? Подвигать стрелочки при наведении через css? Сделать кнопку с раскрытием меню?

    P.S. Я никак не хочу обидеть или оскорбить вас, но я не понимаю, сути вашего вопроса. У вас навыки 70% х 30%, а вы вместо того, что бы начать верстать, пришли сюда с глупым вопросом, а не слишком ли сложно!
    Ответ написан
    2 комментария
  • Как сегодня верстают такие бордеры?

    profesor08
    @profesor08 Куратор тега CSS
    Псевдоэлементы в помощь:
    Ответ написан
    2 комментария
  • Красивый файловый менеджер с фотогалереей?

    t-alexashka
    @t-alexashka
    Сразу пишу legacy код
    5bbc6674199b4687014958.png

    https://www.responsivefilemanager.com работает как часть визивиг-редакторов и как отдельное приложение.
    Ответ написан
    1 комментарий
  • Как загрузить файл на сервер через ссылку?

    @ugodrus
    function downloadFile ($URL, $PATH) {
        $ReadFile = fopen ($URL, "rb");
        if ($ReadFile) {
            $WriteFile = fopen ($PATH, "wb");
            if ($WriteFile){
                while(!feof($ReadFile)) {
                    fwrite($WriteFile, fread($ReadFile, 4096 ));
                }
                fclose($WriteFile);
            }
            fclose($ReadFile);
        }
    }

    Метод отлично работает на больших объемах.
    Можете также реализовать через сокеты. Тоже няшка получается.
    Ответ написан
    1 комментарий
  • Corel Draw для Web актуален?

    dom1n1k
    @dom1n1k
    Что значит в веб-разработке?
    Если рисовать векторную графику (логотипы, иконки и пр) - почему бы и нет? Дело вкуса. У Корела плохая репутация в полиграфической среде из-за проблем с цветоделением (было такое несколько лет назад, как сейчас не знаю), но для веба это неактуально. Редактор как редактор.
    Если имеется в виду рисование именно макета - ни разу такого не видел за много лет в индустрии. Использовать его в этом качестве - это значит стать маргиналом, который как минимум создает всем проблемы вида "и как я должен с этим работать?"
    По факту в реальном мире 99% макетов рисуются в Фотошопе или Скетче в зависимости от религиозной принадлежности.
    Ответ написан
    2 комментария
  • Можно ли с таким портфолио идти на фриланс?

    @McBernar
    Сверстано без визуальных багов, вроде. Я бы легко отдал вам макеты верстать.

    Но только одно "но" — вам надо заменить контент с рыбного, на псевдо-настоящий. Потому что там же прям написано, что это шаблоны и точно возникнут вопросы — ваша ли это верстка или вы просто скачали готовые шкурки и выдете их за свою работу. То есть, молодец, что сверстали, но перепишите контент и тогда точно будет достаточно для старта.
    Ответ написан
    3 комментария
  • Можно ли в своём портфолио указать работы сделанные по заказу веб-студии?

    Pointman
    @Pointman
    финансовый консультант, люблю зависать в блогах
    Работа сделанная полностью вами это и есть ваше портфолио, вне зависимости от того для кого и в составе какой фирмы вы это делали. Если договор о неразглашении не подписывали, то проблем не будет.
    Ответ написан
    Комментировать
  • Можно ли в своём портфолио указать работы сделанные по заказу веб-студии?

    vicodin
    @vicodin
    Имею некоторый опыт
    Ну если работа полностью сделана вами, и НДА вы не подписывали, то почему бы и нет, это же просто демонстрация вашего уровня работы.
    Еще лучше просто указать - работал в такой-то студии с такого-то по такой-то год, принимал участие в разработке таких-то сайтов, делал то-то и то-то
    Ответ написан
    2 комментария
  • Что делать если нет сетки на макете?

    @Designik_by
    SEO, Интернет-маркетинг
    Направляющие можно и самому впихнуть. в чем проблема-то? Можно и без бутстрапа адаптивно сверстать. Можно посмотреть на картинку и заметить, что там 3 колонки одинаковых, можно верстать)
    Ответ написан
    Комментировать
  • Как объеденить 2 sql в 1?

    @VisualIdeas
    SELECT Cases.*, count(BotItems.id) AS "alltypecount" FROM Cases LEFT JOIN Items ON Items.caseid = Cases.id LEFT JOIN BotItems ON BotItems.itemid = Items.itemid GROUP BY Cases.id
    UNION
    SELECT Cases.*, count(BotItems.id) AS "alltypecount" FROM Cases LEFT JOIN Items ON Items.caseid = Cases.id LEFT JOIN BotItems ON BotItems.itemid = Items.itemid AND Items.type = 1 GROUP BY Cases.id

    В результате будет 2 строчки возвращено в столбце с именем alltypecount:
    1) всего
    2) всего по типу
    Ответ написан
    1 комментарий
  • Как сделать input только цифры?

    carlcox
    @carlcox
    Fullstack developer
    type="number" ?
    Ответ написан
    Комментировать
  • Как удается получить заказ на бирже?

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

    Кроме того не стоит вообще обращать на это число еще по одной причине: большинство людей на бирже крайне не компетентны, самому приходиться иметь дело с такими людьми на подобных сайтах. Часть неадекватна, часть пытается тебя кинуть и лишь малый процент реально нацелен на работу.

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

    P.S Поройтесь на фрилансиме, контингент посерьезнее.
    Ответ написан
    Комментировать
  • Как удается получить заказ на бирже?

    @awdemme
    Отвечаю как заказчик, выставлял свои заказы, получал дебильные отклики:

    Большинство получаемых ответов - абсолютно шаблоны. Их авторы не потрудились даже прочитать задачу, понять, а смогут ли они ее выполнить и пр. и пр.

    Это настолько достает, что многие заказчики выставляют в описании задачи ловушки типа "если вы дочитали до сюда, то можете смело мне писать, укажите в вашем отклике на мою работу ключевую фразу "ёжики не могут иметь детей потому что колючие"

    Нужно откликаться так, чтобы было понятно, что ты прочитал задачу.
    Можно сразу предложить варианты решения (пара предложений, без деталей).

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

    Сам я прекрасно брал работы, даже когда начинал обращение с предложением поднять оплату в 1,5-2-3 раза относительно желаемого заказчиком.
    Разумеется, это все было не с потолка, а с моих реальных оценок сложности работ.

    Не пиши отклик, если не видишь внятного описания задачи.
    С большой вероятностью сами не знают что хотят и не разбираются в том, кто им нужен.
    Больше времени потеряешь.
    Ответ написан
    18 комментариев
  • Что делать веб разработчику, если уже всё придумано?

    Stalker_RED
    @Stalker_RED
    Идеи приложений: https://www.reddit.com/r/AppIdeas/
    Идеи вообще: https://www.reddit.com/r/Lightbulb/
    Подобных списков десятки. Бесплатно, без СМС.
    Ответ написан
    9 комментариев