Задать вопрос
  • Админка для laravel?

    daemonhk
    @daemonhk
    ПсиХоПат
    Проблема "админок" для любого фреймворка в том, что дальше CRUD'а и спизж... дизайна они уехать не могут.
    Ответ написан
    1 комментарий
  • Как использовать DDD?

    @EvgeniiR
    https://github.com/EvgeniiR
    Пусть статья и комментарии будут разными агрегатами. У комментариев будет свой домен.

    Можно в контексте комментариев сделать свой класс статьи( Article ). Он даже не будет сущностью:
    class Article {
      private UUID id;
      
      private CommentsRepository comments;
      
      ...
      
      public void function addComment(commentData: commentData) {
        this.coments.add(new Comment(this.id, commentData));
      }
    }


    В контексте комментариев не обязательно нужна статья - нужен только её идентификатор.
    Также в контексте комментариев вовсе не нужны данные пользователя - только его идентификатор. Идентификаторы достаточно стабильная информация чтобы не бояться их шарить.

    И да, в данном случае мы имеем дело просто с декомпозицией системы, к реальному DDD это мало отношения имеет, потому что domain-driven-design, он domain-driven за счёт того что конексты обсуждаются с бизнесом, а не придумываются разработчиком, в данном случае мы просто берём оттуда немножко терминологии потому что она уже стала довольно общей.
    Ответ написан
    2 комментария
  • Как правильно хостить и проигрывать видео в 2020?

    ValdikSS
    @ValdikSS
    То есть получается, что отдача одним файлом и браузерный декод, вышли намного эффективнее чем то, что мы делали через HLS. ¯\_( ツ)_/¯
    Разумеется.
    HLS для VoD используют в двух случаях:
    1. Если нужно, прямо необходимо, автоматически подстраивать качество видео, не выбирая его руками;
    2. Если нужно шифровать куски видео для каждого клиента индивидуально (DRM).

    В остальных случаях, особого резона использовать HLS/DASH нет, т.к. для воспроизведения в браузере он требует media source и javascript-плеер, а обычное HTML5-видео — нет.

    Мы посмотрели кучу стриминговых сервисов, большая часть из них отдавала все свои стримы в формате m3u8, и никаких проблем при этом люди не испытывали. Соответственно назрела куча вопросов о том, как таки стоит делать и в чем могла быть ошибка и как это исправить на будущее.

    Чтобы понять, в чём могла быть ошибка, нужно хотя бы получить какой-то отладочный вывод, или повторить ошибку.
    Во-первых, стандарта HLS «два»: ранний допускает использование контейнера MPEG-TS (.ts), более поздний добавляет поддержку .mp4. MPEG-TS поддерживается лучше, и проще в использовании и на этапе нарезки.

    У меня однажды были точно такие же симптомы, что у вас. Оказалось, что на домене осталась старая DNS A-запись, указывающая на неработающий IP-адрес уже несуществующего сервера. И всё, на удивление, работало, и работало достаточно стабильно, но периодически поток прерывался с ошибками.

    Сложно делать предположения без отладочных данных.

    1) Как правильно хостить файлы на сервере? Нужна ли разбивка при помощи HLS\DASH? Где-то видел что эти технологии нужно использовать в паре, так как каждая из них имеет свою браузерную поддержку.
    Для видеофайлов не требуется какой-то особый подход к размещению на диске. HLS поддерживается только мобильными браузерами (многими, но не всеми), а DASH не поддерживается никакими современными браузерами. Вам в любом случае придётся использовать javascript-плеер, который самостоятельно будет собирать поток из HLS/DASH и воспроизводить через media source, поэтому принципиальной разницы нет. Использовать и HLS, и DASH одновременно точно ни к чему.

    2) Должны ли быть на сервере какие-то специфичные настройки, для эффективной отдачи статического медиа-контента?
    Да не особо. Так как у вас многогигабитный канал, можно попробовать настроить сетевую подсистему (если речь о Linux), а именно увеличить TCP-буферы, буферы отправки и получения, количество conntrack-соединений (может, ошибки соединения возникают по причине лимита conntrack? В dmesg заглядывали?).

    3) Медиа-плеер. Возможно, причина ошибок связана с плеером, который использовали на клиенте?
    Может, безусловно. Плееры содержат достаточно сложный код: парсеры и демуксеры контейнеров, работа с HLS, media source, совместимость с разными браузерами.

    Например, в этом проекте, люди заходили с телевизора, а на tizen flowplayer не работал, от слова совсем.
    Рекомендую попробовать clappr.io — один из немногих, корректно работающих на устаревшем браузере Blackberry.

    4) Шифрование\защита файлов. Как по мне отдача чистых mp4 файлов, небезопасна от слова совсем.
    Зачем нужно защищать ваши файлы, если вы и так их проигрываете? Может, следует подумать о людях и об удобстве просмотра, и предоставить ссылку, которую можно открыть в нормальном видеоплеере, или скачать фильм в виде файла? Не понимаю эту дурацкую тенденцию.
    Ответ написан
    2 комментария
  • А что почитать на тему "Объектно-ориентированный анализ и проектирование"?

    thestump
    @thestump
    программист PHP
    Также интересные книги по DDD. Они углубляют понимание ООП и позволяют на порядок поднять его уровень.
    Ответ написан
    Комментировать
  • А что почитать на тему "Объектно-ориентированный анализ и проектирование"?

    afiskon
    @afiskon
    Вы не поверите, но я куда лучше стал понимать ООП, попробовав пописать на Haskell и Erlang. Попробуйте. Серьезно. Здесь найдете книжки и подробности по этим языкам.
    Ответ написан
    Комментировать
  • Как вы проектируете классы в ООП и их взаимодействие?

    @xfg
    В PHP сообществе вообще не развиты вопросы проектирования и архитектуры. Большинство лепит, что придумает. PHP изначально родился для примитивных homepage, вобрал в себя всю несерьезность, низкий порог входа и как следствие довольно слабое комьюнити, что часто становится объектом для шуток.

    Искать ответы на вопросы проектирования и архитектуры нужно в Java. Например там почти каждый с самых азов слышал о де факто ставшей стандартом слоистой архитектуре, она же layered architecture, она же n-tier architecture и видел изображение похожее на это
    main-qimg-91d7188a63a833488f92239028d0ae
    Из которой нужно понять, что всю программу можно разделить на несколько слоев и зависимость между слоями должна быть направлена сверху вниз, но не наоборот. Таким образом, например фреймворк может быть инкапсулирован в presentation слой и в любой момент безболезненно заменен на другой, так как другие слои ничего о нем не знают. Вся бизнес-логика инкапсулирована в domain слой в виде plain old java object, который не зависит вообще не от чего, а также предоставляет интерфейсы (репозиториев например) для инфраструктурного слоя и только в этом слое фактически и будет тот самый настоящий ООП, который все так упорно пытаются найти. Никакого стороннего кода в бизнес-логике нет, а соответственно весь сторонний код можно в любой момент поменять, не трогая бизнес-логику вообще.

    Для этого нужно открыть какую-нибудь книгу, где за руку проведут с нуля до конкретного приложения построенного с использованием этой архитектуры. Например Implementing domain-driven design, хоть эта книга и о DDD, но я уже говорил, что слоистая архитектура это де факто. С опытом, будет понятно, что в более простых приложениях количество слоев можно уменьшить, понимая на какой компромисс придется пойти, что иногда можно объединить domain и часть infrastructure и получить всем известный шаблон Active Record или вообще выбросить эти слои и получить шаблон transaction script, когда для решения просто не требуется что-то более сложное. Придет понимание, как можно начать с transaction script и в итоге постепенно катиться в сторону domain layer, через active record или не через active record если это когда-нибудь понадобится и тому подобное. Cтанет понятно, зачем, как и когда использовать патерны о которых написал Мартин Фаулер в своей книге Patterns of Enterprise Application Architecture.

    Полученные знания можно применить к любому языку. В том числе и PHP. Будет хорошо, если уровень этого сообщества хоть чуть-чуть будет подтягиваться к уровню Java, вместо того чтобы бомбить пятиуровневые ифы создавая такую цикломатическую сложность, что все метрики кода горят ярче красного.
    Ответ написан
    Комментировать
  • Как правильно деплоить проект?

    Maksclub
    @Maksclub
    maksfedorov.ru
    по п.1 — делается черех веб-хук GIT
    по п.2 — миграции также как и любые др файлы проекта передаются через GIT на продакшн-сервер
    а вот чтобы их применить — нужно на продакшене их накатить
    по. п3 — пароли индивидуально на сервере задаются, их нельзя пихать в GIT


    Чтобы все автоматизировать по цепочке:
    pushвеб-хукpull+migrate+composer update+npm install

    Можно использовать полноценные инструменты для деплоя:
    Deployer
    Capistrano
    Ответ написан
    Комментировать
  • Самая подходящая и доступная для понимания новичком книга по машинному обучению?

    aRegius
    @aRegius
    Python Enthusiast
    На сегодняшний день, для старта я бы рекомендовал:
    Principles of Data Science + Hands-On Data Science and Python Machine Learning

    Если возникнет необходимость/желание оперативно "подтянуть" знания по NumPy и Pandas - рекомендую Python for Data Analysis / 2nd Edition

    Успехов.

    UPD от 10.03.2018
    Ответ написан
    4 комментария
  • Что почитать и на чем потренироваться, не могу перейти от процедурного к ооп?

    qonand
    @qonand
    Software Engineer
    Бертран Мейер - Объектно-ориентированное конструирование программных систем
    Мэтт Вайсфельд - Объектно-ориентированное мышление
    Грэди Буч - Объектно-ориентированный анализ и проектирование с примерами приложений
    Ответ написан
    Комментировать
  • Как называется наиболее читаемая книга по ТАУ(Теория автоматического управления)

    x67
    @x67
    На вопрос из заголовка ответом будет "ТАУ для чайников"
    На вопрос из комментария однозначного ответа не дам, ибо сам хотел бы его получить. Пока что вижу путь чтения всего, что понимается и дальнейших попыток синтеза всего, что интересно. Хотя есть много советских книг по проектированию тех или иных устройств, чаще всего военной направленности, где сначала даются линейные уравнения объекта а потом на их основе синтезируются регуляторы.
    Ответ написан
    Комментировать
  • Как лучше реализовать ответ от контроллера при ошибке?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) статус код зависит от ошибки (404 - плохой ответ в случае когда надо отдать 403 например)
    2) удобнее всего кидать в контроллерах исключения, которые отлавливаются во фронт контроллерах/мидлвэрах, и рендрят красивую страничку (или формируют красивый json - зависит от того что требуется).
    Ответ написан
    4 комментария
  • С какого тома следует начать читать Архитектуру Компьютеров Таненбаум?

    opium
    @opium
    Просто люблю качественно работать
    В вашем случае проще не читать
    Ответ написан
    Комментировать
  • Какую фантастику порекомендуете, где главный герой программист/инженер?

    @teugen
    Призрак алкоголизма.
    Удивительно, что никто ещё не упомянул Понедельник начинается в субботу.

    В некотором роде Мы Замятина. И, конечно, Гиперболоид инженера Гарина.
    Ответ написан
    2 комментария
  • Чем может быть полезен C++ веб разработчику?

    Zifix
    @Zifix
    Barbatum
    Нужно это для общего профессионального развития, напрямую не пригодится. Нужно брать учебник по (C/Assembler), упражнения, и потихоньку проходить. Причем С желательно параллельно с Ассемблером, С++ тут как-то мимо.
    Ответ написан
    Комментировать
  • Работа без высшего образования, это реально?

    @FoxInSox
    Почему вы все так спешите начать работать? Да еще и вместо обучения (каким бы оно ни было).

    - У вас еще впереди лет 30-40 работы, большую часть жизни вам придется работать. Вероятность того, что вы все эти 30 лет будете работать в удовольствие далеко не 100%.
    - Начиная работать на 2-3 года раньше вам не дает сильных преимуществ в перспективе. В практически любой работе гораздо более важна эффективность, а не просто сколько времени вы проработали на определенной должности. Т.е. проработав, например, 5 лет, всегда найдутся люди с меньшим опытом которую делают вашу работу эффективнее (быстрее, качественнее)
    - годы обучения в ВУЗе для очень многих людей являются самыми счастливыми, а во многих случаях даже формируют фундамент всей оставшейся жизни: друзья, хобби, знакомства, связи, какие-то ключевые события. Сидя 8 часов в офисе в день на работе или в квартире на фрилансе вы все это упустите скорей всего.
    - во время учебы у вас есть масса времени попробовать поработать в разных местах и сферах: backend, frontend, мобильная разработка, дизайн, попробовать заняться научной деятельностью, попробовать что либо вообще не связанное с IT. После нескольких лет работы вы только будете мечтать о таком, но времени и возможности сменить радикально сферу работы вы не сможете просто.

    ps ну нахрена вам деньги в 17 лет? Машину купить? Бабу свою свозить в Европу? iMac за 100 тысяч купить? Это все вещи которые не стоят вашего времени как минимум 17 лет точно.
    Ответ написан
    6 комментариев
  • Какова архитектура крупных приложений на низкоуровневых языках?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Почитайте заголовочные .h файлы хорошо структурированных opensource проектов. Я на Plan9 учусь.
    Ответ написан
    Комментировать