Найдено результатов: 16

Лучший способ разрешить плагины для приложения PHP

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

Как можно написать 'hooks' в свой код, чтобы Плагины могли прикрепляться к определенным событиям?

php   plugins   architecture   hook    

547   8   16:03, 1st July, 2020


Хорошая STL-подобная библиотека для C

Что такое хорошие библиотеки для C с такими структурами данных, как векторы, деки, стеки, хэш-карты, древовидные карты, наборы и т. д.? Простой C, пожалуйста, и независимый от платформы.

c   architecture   data-structures    

470   5   16:03, 1st July, 2020


Передача большего количества параметров в указателях функций C

Допустим, я создаю шахматную программу. У меня есть функция

void foreachMove( void (*action)(chess_move*), chess_game* game); 

который вызовет действие указателя функции при каждом действительном перемещении. Это все хорошо и хорошо, но что делать, если мне нужно передать больше параметров функции действия? Например:

chess_move getNextMove(chess_game* game, int depth){
  //for each valid move, determine how good the move is
  foreachMove(moveHandler, game);
}

void moveHandler(chess_move* move){
  //uh oh, now I need the variables "game" and "depth" from the above function
}

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

Как передать дополнительные параметры вызываемой функции через указатель?

c   architecture   pointers    

475   9   09:37, 14th August, 2020


Дебаты по дизайну: каковы хорошие способы хранения и управления версионными объектами?

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

Я нахожусь в середине разработки приложения, которое делает что-то вроде управления портфелем. Дизайн, который у меня есть до сих пор, - это

  • Проблема: проблема, которую необходимо решить
  • Решение: предлагаемое решение одной или нескольких проблем
  • Отношение: отношение между двумя проблемами, двумя решениями или проблемой и решением. Далее разбивается на:
    • Родитель-ребенок - своего рода категоризация / иерархия дерева
    • Перекрытие-степень, в которой два решения или две проблемы действительно решают одну и ту же концепцию
    • Адреса-степень, в которой проблема обращается к решению

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

Итак, вопрос: каков наилучший дизайн для версирования этих вещей, чтобы я мог получить как текущую, так и историческую перспективу своего портфолио?

Позже: возможно, я должен сделать это более конкретным вопросом, хотя ответ @Eric Beard стоит того.

Я рассмотрел три проекта баз данных. Я буду достаточно каждого, чтобы показать свои недостатки. Мой вопрос: Что выбрать, или вы можете придумать что-то лучше?

1: проблемы (и отдельно, решения) являются самореферентными в управлении версиями.

table problems
  int id | string name | text description | datetime created_at | int previous_version_id

  foreign key previous_version_id -> problems.id

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

2: Создайте новый тип отношений: версия.

table problems
  int id | string name | text description | datetime created_at

Это просто перемещает отношения из таблиц проблем и решений в таблицу отношений. Та же проблема дублирования, но, возможно, немного "cleaner", так как у меня уже есть абстрактная концепция отношений.

3: Используйте более Субверсионную структуру; переместите все атрибуты проблемы и решения в отдельную таблицу и версируйте их.

table problems
  int id

table attributes
  int id | int thing_id | string thing_type | string name | string value | datetime created_at | int previous_version_id

  foreign key (thing_id, thing_type) -> problems.id or solutions.id
  foreign key previous_version_id -> attributes.id

Это означает, что для загрузки текущей версии проблемы или решения я должен извлечь все версии атрибута, отсортировать их по дате, а затем использовать самую последнюю. Это может быть не так уж и страшно. Что кажется мне действительно плохим, так это то, что я не могу проверить эти атрибуты в базе данных. Этот столбец value должен быть свободным текстом. Я могу сделать столбец name ссылкой на отдельную таблицу attribute_names , которая имеет столбец type ,но это не заставляет правильный тип в таблице attributes .

еще позже: ответ на комментарии @Eric Beard о внешних ключах с несколькими таблицами:

Увы, то, что я описал, является упрощенным: есть только два типа вещей (проблемы и решения). На самом деле у меня есть около 9 или 10 различных типов вещей, поэтому у меня будет 9 или 10 столбцов внешних ключей под вашей стратегией. Я хотел использовать наследование одной таблицы, но эти вещи имеют так мало общего, что было бы крайне расточительно объединять их в одну таблицу.

architecture   time   rdbms   versions    

494   5   12:22, 29th August, 2020


Как вы делаете системную интеграцию?

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

Мне интересно, решаете ли вы ее, разрабатывая свои собственные небольшие сервисы, которые затем подключаются, или используете какой-то продукт (WebSphere, BizTalk, мул и т. д.). Я также думаю, что было бы интересно узнать, как такие решения управляются и поддерживаются (как вы решаете проблемы безопасности, инструментирования и т. д.), Какие проблемы вы испытывали с вашим решением и так далее.

architecture   system-integration    

524   5   13:01, 3rd August, 2020


Структура пространства имен / решения

Я прошу прощения за то, что задаю такой обобщенный вопрос, но это то, что может оказаться сложным для меня. Моя команда собирается приступить к большому проекту, который, как мы надеемся, объединит все случайные одноразовые кодовые базы, которые развивались на протяжении многих лет. Учитывая, что этот проект будет охватывать стандартизацию логических сущностей по всей компании ("Customer", "Employee"), малые задачи, большие задачи, которые управляют малыми задачами, и коммунальные службы, я изо всех сил пытаюсь найти лучший способ структурировать пространства имен и структуру кода.

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

  • Я обсуждаю одно крупное решение с подпроектами, чтобы сделать ссылки проще, но не будет ли это слишком громоздким?
  • Следует ли мне свернуть устаревшую функциональность приложения или оставить ее полностью агностичной в пространстве имен (например, сделать класс OurCRMProduct.Customer по сравнению с общим классом Customer )?
  • Должен ли каждый сервис / проект иметь свои собственные BAL и DAL , или это должен быть совершенно отдельный assembly, на который ссылается все?

У меня нет опыта в организации таких далеко идущих проектов, только разовые, поэтому я ищу любые рекомендации, которые могу получить.

architecture   module   namespaces   legacy    

481   6   05:46, 16th August, 2020


Как вы начинаете проектировать большую систему?

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

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

Несколько вещей, которые нужно иметь в виду: я студент колледжа на моей первой настоящей работе по программированию. Я буду использовать Java. У нас уже есть SCM настроенных с автоматизированным тестированием, etc...so инструментов не проблема.

java   oop   architecture    

734   10   20:56, 13th August, 2020


VS.NET Схемы Применения

Использовали ли вы схемы приложений и систем VS.NET Architect Edition для начала разработки решения?

Если да, то нашли ли вы его полезным? Функция "automatic implementation" работала нормально?

c#   .net   visual-studio   architecture   diagram    

486   3   13:53, 1st August, 2020


Agile архитектуры

Я начинаю свою дипломную работу, и тема будет "agile architectures"

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

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

architecture   agile   design-patterns    

467   8   14:48, 13th August, 2020


Опыт работы с документацией об архитектуре Shared Nothing

Есть ли у вас какой-либо опыт проектирования реальной архитектуры совместного использования? У вас есть какие-нибудь показания, чтобы рекомендовать меня?

architecture   shared-nothing    

499   3   21:10, 20th August, 2020


Как вы передаете сообщения/ошибки уровня обслуживания на более высокие уровни с помощью MVP?

В настоящее время я пишу приложение ASP.Net от UI вниз. Я внедряю архитектуру MVP, потому что я устал от Winforms и хотел чего-то, что имело лучшее разделение проблем.

Таким образом, с MVP презентатор обрабатывает события, вызванные представлением. Вот некоторый код, который у меня есть, чтобы иметь дело с созданием пользователей:

public class CreateMemberPresenter
{
    private ICreateMemberView view;
    private IMemberTasks tasks;

    public CreateMemberPresenter(ICreateMemberView view) 
        : this(view, new StubMemberTasks())
    {
    }

    public CreateMemberPresenter(ICreateMemberView view, IMemberTasks tasks)
    {
        this.view = view;
        this.tasks = tasks;

        HookupEventHandlersTo(view);
    }

    private void HookupEventHandlersTo(ICreateMemberView view)
    {
        view.CreateMember += delegate { CreateMember(); };
    }

    private void CreateMember()
    {
        if (!view.IsValid)
            return;

        try
        {
            int newUserId;
            tasks.CreateMember(view.NewMember, out newUserId);
            view.NewUserCode = newUserId;
            view.Notify(new NotificationDTO() { Type = NotificationType.Success });
        }
        catch(Exception e)
        {
            this.LogA().Message(string.Format("Error Creating User: {0}", e.Message));
            view.Notify(new NotificationDTO() { Type = NotificationType.Failure, Message = "There was an error creating a new member" });
        }
    }
}

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

Допустим, могут отображаться следующие сообщения уровня сервиса:

  • Учетная запись электронной почты уже существует (сбой)
  • Ссылка на введенного пользователя не существует (сбой)
  • Длина пароля превышает допустимую длину хранилища данных (сбой)
  • Участник создан успешно (success)

Предположим также, что на уровне сервиса будет больше правил, которые UI не может предвидеть.

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


Редактировать не по OP: слияние в последующих комментариях, которые были опубликованы в качестве ответов OP


Cheekysoft, мне нравится концепция a ServiceLayerException. У меня уже есть глобальный модуль исключений для исключений, которые я не ожидаю. Считаете ли вы, что все эти пользовательские исключения утомительны? Я думал, что ловить базовый класс исключений было немного вонючим, но не был точно уверен, как продвигаться оттуда.

tgmdbm, мне нравится умное использование выражения lambda там!


Спасибо Cheekysoft за последующие действия. Поэтому я предполагаю, что это будет стратегия, если вы не возражаете, чтобы пользователь отображал отдельную страницу (Я в первую очередь веб-разработчик), если исключение не обрабатывается.

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

Вот как выглядит CreateUserView, когда ведущий обработал ServiceLayerException:

Create a user

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

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

c#   asp.net   exception   mvp   n-tier-architecture    

525   3   08:19, 15th August, 2020


Как вы определились между WISA и LAMP?

Приходилось ли вам когда-нибудь выбирать между WISA или LAMP в начале веб-проекта?

Хотя плюсы и минусы разбросаны по всей сети, было бы полезно узнать о вашем реальном опыте в разработке критериев w/, оценке, принятии решений и размышлении о вашем решении перейти на любую платформу w/.

architecture   web-applications   lamp   platform   wisa    

429   13   03:37, 28th August, 2020


Как создать подключаемую программу Java?

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

У меня есть набор интерфейсов, которые плагин должен реализовать, и он должен быть в jar. Программа должна следить за новыми банками в относительной (к программе) папке и регистрировать их каким-то образом.


Хотя мне нравится Eclipse RCP, я думаю, что это слишком много для моих простых потребностей.

То же самое относится и к Spring, но так как я все равно собирался посмотреть на него, я мог бы попробовать.

Но все же я предпочел бы найти способ создать свой собственный плагин "framework" как можно проще.

java   plugins   plugin-architecture    

452   6   11:54, 3rd August, 2020


Лучшая архитектура для обработки изменений файловой системы?

Вот такой сценарий:

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

GUID.dat где GUID = = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (внутреннее содержимое не имеет отношения, но это просто текстовые данные)

Мое приложение будет представлять собой форму, которая имеет одно текстовое поле, которое показывает все файлы, которые добавляются и удаляются в режиме реального времени. Каждый раз, когда появляется новый файл, я должен обновить textbox с этим файлом, но сначала я должен убедиться, что этот полу-уникальный GUID действительно уникален, если это так, обновите textbox с этим новым файлом.

Когда файл удаляется из этого каталога, убедитесь, что он существует, а затем удалите его, обновите textbox соответствующим образом.

Проблема в том, что я использую его .NET filewatcher и кажется, что есть внутренний буфер, который взрывается каждый раз, когда входит (buffersize + 1)-й файл. Я также попытался сохранить внутренний список в своем приложении и просто добавить каждый файл, который входит, но позже выполните проверку unique-GUID, но без кубиков.

.net   architecture   concurrency   filesystemwatcher    

443   2   14:19, 9th August, 2020


Руководство по выбору между REST и SOAP услугами?

Есть ли у кого-нибудь ссылки на документацию или руководства по принятию решения между REST и SOAP? Я понимаю и то, и другое, но ищу некоторые ссылки на ключевые моменты принятия решений, например, безопасность, которые могут заставить вас склониться к тому или иному.

architecture   rest   soap    

422   4   04:17, 17th August, 2020


Разделить класс доступа к данным на читателя и писателя или объединить их?

Это может быть на стороне "discussy", но я действительно хотел бы услышать Ваше мнение об этом.

Ранее я часто писал классы доступа к данным, которые обрабатывали как чтение, так и запись, что часто приводило к плохому именованию, например FooIoHandler и т. д. Эмпирическое правило, что классы, которые трудно назвать, вероятно, плохо разработаны, предполагает, что это не очень хорошее решение.

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

Является ли разделение читателя / писателя лучшим дизайном, или я должен их объединить? Если я должен объединить их, Какого черта я должен назвать класс?

Спасибо /Erik

architecture   oop   data-access    

422   5   18:38, 4th August, 2020