Программная инженерия

Q & A для профессионалов, преподавателей и студентов, работающих в жизненном цикле разработки систем

2
Можно ли определить все побитовые операторы, используя «побитовый nand», подобно тому, как вся логическая логика может быть построена, используя просто «булевский nand»?
Nand известен как «универсальный» логический элемент, потому что он позволяет вам определять все другие логические логические элементы: not(x) = nand(x,x) and(x, y) = not(nand(x, y)) or(x, y) = nand(not(x), not(y)) nor(x, y) = not(or(x, y)) xor(x, y) = nand(nand(a, nand(a, b)), nand(b, nand(a, b))) Это называется nand-logic и обычно используется …

4
Обработка изменений в управляемой событиями архитектуре микросервиса
Я занимаюсь исследовательским проектом, в котором изучаю варианты обработки изменений в микросервисной архитектуре, управляемой событиями. Итак, скажем, у нас есть приложение, в котором мы получили четыре разных сервиса. Каждый из этих сервисов имеет собственную базу данных для хранения локальных данных. В этой настройке четыре службы обмениваются данными друг с другом …


3
Контейнеры DI / IoC и фабрики: где я могу настроить приложение и почему?
Я пытаюсь выяснить, когда использовать реестр DIC / IoC для настройки моего программного обеспечения и когда использовать фабрики, а также обосновать любой из этих подходов. Я использую StructureMap в качестве моего DI-контейнера (DIC), который легко настроить с помощью реестров. В DIC практически все зарегистрированные объекты являются статическими в том смысле, …

2
Apollo-11: использование включения вместо компоновщика
Недавно оцифрованный и превращенный в репозиторий исходный компьютерный исходный код Apollo 11 был доступен для просмотра на Github . В репозитории MAIN.agc автор репозитория комментирует, что они разбить огромный монолитный исходный код на более мелкие, более управляемые куски - т.е. на отдельные исходные # файлы. Чуть позже автор заявляет Можно …

3
Почему Swift сначала инициализирует собственные поля подкласса?
В языке Swift, чтобы инициализировать экземпляр, нужно заполнить все поля этого класса и только потом вызывать суперконструктор: class Base { var name: String init(name: String) { self.name = name } } class Derived: Base { var number: Int init(name: String, number: Int) { // won't compile if interchange lines self.number …

4
Я преждевременно оптимизирую?
В настоящее время я нахожусь на стадии разработки архитектуры на основе компонентов в C ++. Мой текущий дизайн включает в себя использование таких функций, как: std::vectors std::shared_ptrдля хранения компонентов std::dynamic_pointer_cast std::unordered_map<std::string,[yada]> Компоненты будут представлять данные и логику различных элементов, которые необходимы в игровом программном обеспечении, таком как графика, физика, искусственный …

1
Имеет ли смысл применять принципы Redux к ОО-языкам?
Redux - это по сути функциональное программирование, и оно имеет большой смысл. Когда я возвращаюсь к языку ООП, не поддерживающему JavaScript, в другом проекте, я хотел бы применить те же принципы, такие как один объект состояния, редукторы, которые воздействуют на части этого состояния, бизнес-уровень семантических действий для изменения состояния. Мой …

2
Структура данных для двумерных настольных игр на функциональных языках
Я создаю простую реализацию MiniMax на функциональном языке программирования Elixir. Поскольку существует множество игр с совершенным знанием (крестики-нолики, connect-four, шашки, шахматы и т. Д.), Эта реализация может стать основой для создания игровых ИИ для любой из этих игр. Однако одна проблема, с которой я сталкиваюсь, заключается в том, как правильно …

6
Как статическая типизация действительно полезна в больших проектах?
Любопытствуя на главной странице сайта языка скриптового программирования, я натолкнулся на этот отрывок: Когда система становится слишком большой, чтобы держать ее в голове, вы можете добавлять статические типы. Это заставило меня вспомнить, что во многих религиозных войнах между статическими, скомпилированными языками (например, Java) и динамическими интерпретируемыми языками (в основном Python, …

3
На языке REST, в чем разница между ресурсом и представлением?
Я понимаю, что REST позволяет моделировать операции сервиса как представление состояния и переход из одного состояния в другое с использованием HTTP. Я всегда понимал ресурсы как представления о состоянии сервисной стороны до недавнего времени, когда читал эту статью Джимми Богарда, которого я знаю как умного разработчика / архитектора, которого уважает …
9 rest  api  api-design 

6
Критерии приемки для краевых случаев
Я владелец продукта в гибкой команде. Я, когда я делаю приемочное тестирование ПО, обычно отмечаю, чтобы попробовать некоторые крайние случаи Для меня не редкость, когда я что-то открываю, и затем я передаю это разработчикам. Меня отталкивает один из разработчиков, когда я отвергаю его истории. Он говорит, что это несправедливо, поскольку …

1
Идиоматическое обёртывание C ++ типа шаблона API в C
Я работаю над упаковкой API C ++, который предоставляет доступ к хранилищу данных (Hazelcast) в функции C, чтобы к хранилищу данных также можно было получить доступ из кода только на C. API Hazelcast C ++ для структуры данных Map выглядит следующим образом: auto map = hazelcastClient->client->getMap<int, string>(mapName); map.put(key, value); Он …
9 c++  c  api-design 

1
Что делать при использовании MIT-лицензированного кода в GPL-лицензированном проекте?
Я работаю над личным проектом, который планирую лицензировать под GNU Affero GPL . Тем не менее, я нашел некоторый код, который лицензируется в рамках MIT, который действительно хочет использовать, но я не уверен, что мне следует делать с лицензированием. Остальная часть кода будет моей под GNU Affero, это всего лишь …

1
Моделирование сложного графика работы
У меня есть реальная проблема, которую я пытаюсь представить и автоматизировать. Я упростил и обобщил это до следующего: Есть n мест работы (P1, P2, ..., Pn). У каждого места у Pn есть ключ, Kn. Есть м Рабочих, (W1, W2, ..., Wm). Чтобы работать в Pn, рабочий должен держать Kn. Каждый …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.