Ответы пользователя по тегу Проектирование программного обеспечения
  • Как лучше организовать API для работы с websockets?

    riky
    @riky
    Laravel
    websocket по умолчанию не работает в режиме запрос-ответ. это именно возможность быстро отправлять события на вторую половину приложения. то есть как правило отправляется название события и его данные payload.
    отправка события не всегда предполагает необходимость ответа, как правило отправка клиентом события на сервер порождает события для других клиентов.
    rest при желании можно завернуть, но это будет именно rest поверх websocket, а не rest-websocket. то есть отправляете сообщение содержащее метод, endpoint, params, id_request(для того чтобы сопоставить ответ с запросом на клиенет) и тд. в вебсокет а на сервере это все разбирать и роутить.
    для нового проекта смысла в этом конечно мало, можно проще сделать, а семантичность тут ни к чему. для старого проекта можно сделать чтобы не переписывать всю бизнес логику проекта, а просто сделать ф-ю которая аналогично fetch/axios делает аналогичные запросы только через websocket.
    воспринимайте websocket как систему обмена сообщениями(событиями), а не запрос-ответ.
    Ответ написан
    Комментировать
  • Что почитать об архитектуре CMS?

    riky
    @riky
    Laravel
    не уточнили какую цмс вам надо.
    цмс бывают двух типов:
    (1) просто система для управления контентом, которая ставится на сервер как правило в одном экземпляре, для упрощения работы менеджерам над контентом, или пользователм сайта.
    (2) и коробочные цмс которые либо свободно распространяются либо продаются, но факт в том что много юзеров использует их.

    для проектирования цмс первого типа, нужны общие знания о ООП в пхп и MVC. проект очень простой, нужно знать только ООП/MVC и желательно выбрать какой нибудь фреймворк symfony/laravel/yii.
    во втором случае система должна быть супер универсальной, функциональной. очень большие сложности возникают для обеспечения писателям плагинов(сторонним разработчикам) хорошего внутреннего апи (систему хуков hooks).

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

    разработка же цмс первого типа ничего сложного, паттерны там общие как при разработке любого сайта на фреймворках, поэтому любые книжки по паттернам и проектированию подойдут.
    Ответ написан
    4 комментария
  • Материалы по разработке рекламных сетей (движков)?

    riky
    @riky
    Laravel
    заметьте, автор статьи в комментах писал:
    Если кратко, то по очевидным причинам деталей алгоритмов мы раскрывать не будем

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


    и оно понятно - в этой отрасли постоянно идет война с двух сторон.
    да и в статье он по сути ничего толком не сказал про детект скликивания, про mouse up/down только (все таки это больше рекламная статья, тех детали только для того чтобы статью не забанили и был какой то мотив ее читать). но я думаю это только начало. да и после таких статей боты "странным образом" тоже становятся умней ;) вы думаете создатели этой же зенки не читают их? в общем по этому пункту - не ждите каких то откровений, если они и есть то уже не актуальны, так как для ботоводов это их хлеб, если это описано - то скорее всего они это уже сделали. а боты сейчас очень крутые (это уже не пхп/курл) везде эмуляторы браузеров. тут шишки придется набивать по ходу пьессы. Заметьте, он написал "К тому же они постоянно дополняются исходя из анализа текущего трафика" - поэтому нужно делать ровно то же. смотрим где не реальный CTR и изучаем причины, смотрим "параметры" юзеров которые идут с этого сайта, ищем закономерности. предварительно нужно взять популярные системы автоматизации (или ботов) и искать их слабые места, пытаться найти закономерности чем они отличаются от юзеров.

    Если это делать не хочется, то либо воспользуемся подобным сервисом, либо берем в консультанты человека который уже занимается этим, только нужно будет показать ваши намерения, что вы не ботоводы, иначе у него могут быть проблемы с его основной работой (так как и они могут притворится невинными разработчиками, а сами хотят секреты слить). Также вариант - зайти разведчиком с темной стороны, на всякие даркфорумы (и не только паблик), там могут быть советы как обходить защиты. В любом случае если хотим надежно - это не вариант сделал и забыл, тут нужно постоянно мониторить и анализировать.

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

    Архитектуру я бы и сам с удовольствием почитал (ради интереса хотя бы), но такое или самому думать или за деньги, у тех кто уже занимался таким, вещь специфичная.
    Ответ написан
    Комментировать
  • Нужно ли отдельно проектировать архитектуру проекта?

    riky
    @riky
    Laravel
    если чувствуете что вашей квалификации не достаточно то смысл есть конечно.

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

    riky
    @riky
    Laravel
    Судя по вопросу ты не можешь выбрать что было в начале яйцо или курица. вначале не было ни того, ни другого, была другая абстрактная птица, которая может даже не летала, но как то ее дитя через несколько поколений мутировало в курицу.

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

    сделай например для начала заготовку, авторизацию (простой интерфейс + табличку в базе), потом добавление задачи в црм (+ табличку для нее), для начала можно с простейшим дизайном.

    Тебе сейчас нужно просто начать чтото делать. И делать понемногу все и фронтенд и бекенд и базу. Не бойся потом все можно отрефакторить/переделать. У тебя мало опыта чтобы сразу сделать хорошую архитектуру, но это не значит что нельзя начинать.

    И то что было в начале уродцем постепенно превратится в курицу, несущую золотые яица

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

    Советую сразу использовать какой нибудь php фреймворк, так хотя бы не придется ломать голову какую архитектуру должен иметь сервер и многие вещи будут уже готовы.

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

    riky
    @riky
    Laravel
    Самый лучший выход на мой взгляд сделать эту возможность как задание в игре. То есть клиент сам выбирает активировать ее или нет и насколько сильно можно загружать проц и взамен за рассчет кадой игры получает какие то внутриигровые бублики, по сути они работают на вас, ведь с таким же успехом вы могли бы майнить битки на их видюхах, вместо рассчета игр, поэтому им за это надо платить, пропорционально работе которую они выполняют, и тогда игроки будут рады это делать. естественно не обязательно говорить им именно про рассчет игр, а обыграть уже геймплеем (например ускоренное изучение магии со сокростью x2 требует дополнительной вычислительной мощности для игрока + обьяснить игроку что чем мощнее комп тем быстрее будет идти изучение). + можно сделать опцию чтобы активировать эту штуку только при питании от сети, таким образом многие игроки будут специально оставлять телефон включенным на зарядке лишь бы получить бонусы.
    Ответ написан
    6 комментариев