Ответы пользователя по тегу Проектирование программного обеспечения
  • Не могу понять что имел ввиду автор. "Разработка архитектуры ПО" и "высокоуровневое проектирование" синонимы или нет?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В данном случае - одно и тоже.
    Ответ написан
    Комментировать
  • Нужно ли разделение системы на сервисы, за которые отвечает в полной мере минимум один человек?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Разбитие на микросервисы делается не для того, чтобы за микросервис отвечал один человек (для этого есть ООП), а чтобы приложение могло легко масштабироваться горизонтально, когда отдельные микросервисы запускаются на разных хостах, а возможно даже и в несколько инстансов с балансировщиком нагрузки.
    Ответ написан
  • Что такое бизнес логика android приложения?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Предположим, вы хотите написать программу, которая будет считать коммунальные расходы.

    Бизнес логика тут простейшая - нужно ежемесячно вводить показания счетчиков и формировать цену исходя из тарифа. Следовательно нужно дать возможность устанавливать тариф для каждого месяца и возможность вводить показания счетчика. Может вы ошибочно ввели неправильные показания счетчика - значит должна быть возможность удалить показания или редактировать.

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

    Бизнес-логика это часть тех.задания, когда программа делает то, что нужно клиенту. Технические алгоритмы клиенту не так важны. Будете вы пользоваться массивами или б-деревом, базой данных или хранить все в CSV файлике - это уже техническая часть.
    Ответ написан
    Комментировать
  • Болезнь творца или как создать свой виртуальный мир?

    saboteur_kiev
    @saboteur_kiev Куратор тега Разработка игр
    software engineer
    1. Можно вообще не заморачиваться графикой, обойтись по началу текстом.

    2. Да, вполне можно разделить процессы на разные сервисы. Общение можно делать через базу данных или любой вид межпроцессорных взаимодействий, те же сокеты.
    Главное грамотно разделить.
    В идеале, чтобы остановка одного из процессов не мешала жить остальным - упал сервер обслуживающий AI, исчезли монстры. Но сам мир, трава, ресурсы - на месте, и пользователи могут бегать. Так реализовано в той же Linage от NCSoft.

    3. Если у вас будет готова и описана логика, то высоконагруженные алгоритмы можно написать на С++, java, go, любом другом языке.

    Если вы собираетесь это все монетизировать - это одно. Просто выпустите рабочий хороший вариант, доведите его до ума и пробуйте. Если взлетит - всегда можно будет нанять программистов, переписать отдельные процессы с нуля (при наличии ТЗ и хорошо описанной логики) на компилируемом языке.
    Ответ написан
    Комментировать
  • Как лучше организовать хранение игрового инвентаря в базе данных?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    А почему масштабируемость не выдерживает?
    В проектах типа Lineage2 (онлайн до 5000, зарегистрированных аккаунтов до 15000) - это не проблема.

    КАЖДЫЙ предмет - это строка в таблице items, с указанием владельца.

    Поля примерно такие:
    item_id, owner_id, item_type, param1, param2, param3
    item_id - уникальный номер предмета
    owner_id - ID владельца, можно добавить поле для координат и времени хранения для тех предметов, которые лежат на земле. Периодически их можно удалять, а те, у которых время хранения 0 не удалять.
    item_type - ID типа предмета, в отдельной таблице храните все предметы и их неизменяемые параметры (вес, материал, название, описание, ограничения по расам, по куда одевать, все такое)
    param1...param10 - изменяемые параметры предмета (заточки, цвет, эффекты, состояние поломки)
    Для предметов типа деньги, монеты, бутылки - можно сделать столбец с количеством, для остальных предметов это всегда 1.

    Положение предмета (типа одет, или в рюкзаке), можно делать или в этой же таблице, или в таблице владельца.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Любая нормальная база сама занимается грамотным кешированием в памяти, и двойное-тройное кеширование не нужно. Вы можете просто загружать объекты в память и обращаться к ним, а не к базе. Но если вы их меняете, то нужно регулярно сохранять. База это делает самостоятельно, поэтому нет смысла делать велосипед.
    Что-либо тюнить имеет смысл, если у вас настолько высоконагруженный проект, что стандартные средства не решают проблему.
    Ответ написан
    5 комментариев
  • Какую связку технологий выбрать для реализации проекта с 5000 онлайном?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Зависит от того, какую среднюю нагрузку на сервер дает среднестатистический пользователь, как часто они это делают, какие возможные пики.
    Просто количество пользователей - ни о чем.

    Например простой форум с 5000 единовременным онлайн можно даже на среднестатистическом современном ноутбуке хостить. Под виндой.
    Ответ написан
    1 комментарий
  • Входит ли в обязанности архитектора обзор цен на стек технологий?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Бывает и так и так.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    У вас слишком много свободного времени, вот и не знаете куда девать.
    Ответ написан
    Комментировать
  • Как через SSH открыть CLI не перезапуская программу?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Не нужно писать архитектуру.
    То что вы хотите делать, уже выполняют менеджеры экранов - screen и tmux - пользуйтесь ими. Если очень интересно, посмотрите как они написаны.

    Но добавлять такой функционал в свою программу - не линукс way, если уже есть готовые инструменты.
    Ответ написан
    Комментировать
  • Как написать игровой сервер?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Обратите внимание, что свободное перемещение доступно в играх с небольшим онлайном.
    В играх с большим онлайном, типа линейка/вов, у вас не свободное перемещение а подача команды "бежать на координаты x,y", атаковать противника z
    следовательно не так много информации нужно передавать о каждом игроке.

    Пинг вообще не причем - у сервера крутится внутренний цикл событий, который обрабатывает все действия с определенной скоростью.
    Выбирается минимальное время S, за которое в игровом мире может происходить какое-то действие. Все действия основываются на этом времени (каст заклинания 3s, пройти по горизонтали 1 шаг 1S, пробежать 3 шага 1S)

    Как пришел на сервер пакет от игрока с командой, так сервер и начал ее выполнять. А на клиенте уже можно отрисовывать действия более плавно.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Железо
    software engineer
    Читать спецификации.
    Читать официальную документацию производителя.

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

    Например:
    Выбрал материнку - хочешь подобрать к ней процессор.

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

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

    И так с каждой запчастью.

    Если ты работаешь на сборке или в поддержке компании, через 100-200 компов у тебя уже опыт, и ты многие вещи начинаешь делать интуитивно быстро, но все равно сверяешься с официальной документацией. Просто ты это делаешь быстро, потому что знаешь на какие вещи нужно обращать внимание, какие можно пропускать.
    Ответ написан
    4 комментария
  • Как правильно выбрать архитектуру приложения?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Архитектор, это обычно выше уровня senior, поэтому в книгах не будет указано на сколько слоев нужно делить и какой паттерн выбрать для вашего приложения.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Один из нормальных путей - дорасти до архитектора своим ходом в крупном проекте и попытаться его переделать в лучшую сторону. Хороший архитектор растет на личном опыте, а книжки помогают избегать совсем детских болезней и расширять видение.

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

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Если вы не знаете, какую архитектуру использовать, значит вы себе плохо представляете, какие проблемы вы хотите этой архитектурой решить.
    Не существует просто "красивой идеальной архитектуры", всегда каждое решение было ответом для какой-то задачи или проблемы.
    Задумайтесь над этой точкой зрения.
    Ответ написан
    3 комментария
  • Как объяснить девушке что такое "некрасивый" код?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Если некрасивый код не видять говнокодеры программисты, то почему вы считаете, что его сможет увидеть девочка, которая вообще не программист?
    Красивый код - это понимание нюансов программирования. Вполне возможно, что вы найдете парочку примернов достаточно наглядных, чтобы продемонстрировать разницу, потратив полчаса на пояснение. Но научить видеть - не выйдет.
    Ответ написан
    1 комментарий
  • Как программируется ПО (не игры и приложения) на мобильники?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Прошивка на телефоне - это просто операционная система. И у производителей девайсов эти системы могут быть очень непохожи на все, что вы до сих пор видели. Эта область называется embedded.
    Без документации про то, как работает само устройство, без исходников этой прошивки (она же уже откомпилированная под конкретный чипсет), вы вряд ли что-либо полезное сможете сделать. Вы даже не знаете названия чипсета и каким компилятором под него компилить, а если в инете что-то и есть, то скорее всего на китайских сайтах фанатов, в виде иероглифов, и гугл транслейт вам вряд ли поможет.

    Хотите углубиться в архитектуру микроконтроллеров - попробуйте доступные и полезные ардуино к которым и документации и примеров хватает, а главное доступность по цене радует.
    Ответ написан
    Комментировать
  • Куда двигаться профессионально?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Женитесь, остальные вопросы отпадут.
    Многопоточность и приколы современных компиляторов для вас открытая книга?
    Поищите работу, в котором уровень сеньерности выше, чем в вашем текущем проекте, и узнаете новые грани для себя.
    Ответ написан
    2 комментария
  • Как построить приложение клиент-серверной архитекутры?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Клиент и сервер общаются каким угодно способом. Можно и через почту связь наладить, и через другие протоколы, не ip.

    Если вам нужно, чтобы сервер и клиент связывались через интернет, как в сайтах, достаточно будет связи по IP адресу и порту.
    Почитайте про API и его реализацию для веб-технологий.
    Ответ написан
    Комментировать