АКДС сама по себе очень тяжёлая прививка с массой побочных эффектов, и это в общем-то ни для кого не секрет. При этом местная российская вакцина может быть не самого лучшего качества. Это же не означает, что теперь всем не нужно ставить прививки.
Если говорить про «запрет информации» — реальность такова, что на одного человека, который способен адекватно воспринять такую информацию, найдётся тысяча неадекватов, ставящих под угрозу здоровье и будущее своих детей.
Интересный подход. Если говорить про C#, то всё же не совсем понятно, чем вас не устроили существующие профилировщики. Например, dotTrace поддерживает line-by-line profiling, я думаю, что если поискать — в других профилировщиках тоже есть такие возможности. Также, если у вас .Net Framework 4+, вы можете использовать атрибут [CallerMemberName] для того, чтобы получить имя вызывающего метода — это гораздо быстрее и проще.
Отчасти на базе этих интерфейсов построена, например, замечательная библиотека Rx.Net, рекомендую ознакомиться, если вы и правда испытываете такие проблемы.
В вашем случае, вы можете унаследовать свои источники событий от IObservable, а модель — от IObserver. Реализуете свою логику обработки поступающих данных в OnNext/OnError/OnCompleted, подписываете модель на источники событий, и оказывается, что количество источников вовсе не так уж и важно, да и если они отвалятся — ничего страшного не произойдёт.
А вы попробуйте сами для начала сделать такой класс.
Смотрите, есть два варианта (базовых, вариантов конечно же больше):
Определяете интерфейсы для всех компонентов UI (Margin, Width, Measure и т.д.), делаете абстрактную фабрику, знания о платформе концентрируете в конкретных реализациях — получаете простой для сопровождения код, максимально абстрагированный от платформы
Убираете «лишние сущности» и оставляете только классы элементов, передавая в конструктор платформу. С таким подходом каждый отдельно взятый визуальный элемент должен знать о каждой платформе
А теперь возьмите вариант #2, и представьте, что вам необходимо добавить поддержку ещё одной платформы.
Я вас разочарую, но это именно абстрактная фабрика. Смотрите, например, вики. Это, конечно, похожие шаблоны, но абстрактная фабрика — это порождающий шаблон, а мост — структурный.
Абстрактные фабрики, на самом деле, далеко не везде нужны. Хороший пример в данной ситуации — это кроссплатформенный GUI framework, в котором вам необходимо создавать визуальные элементы (кнопки, поля ввода и т. д.) одинаковым образом независимо от платформы. То есть, у вас будет интерфейс по типу IVisualElementFactory с методами CreateButton, CreateTextBox и так далее, у которого будут реализации, например, WindowsVisualElementFactory и MacVisualElementFactory. Клиентский код получает из фреймворка уже готовый экземпляр IVisualElementFactory и конструирует свой визуальный интерфейс, не требуя знания о платформе.
Если вы не разрабатываете подобные программные системы — такие шаблоны вам без надобности.
Всё же зависит, как вы правильно говорите, от движка. В .Net, например, используется недетерминированный конечный автомат, чтобы обеспечить поддержку хотя бы backtracking. Если вы используете backtracking (и другие расширения базового синтаксиса regex), производительность будет оставлять желать лучшего, я уверен.
Если говорить о HTML, то далеко не всегда у вас на входе будет полностью валидная разметка.
Бывало, конечно, и такое, что приходилось делать анализ, например, списка объявлений переменных на Pascal/C/C# при помощи регулярного выражения (сыну маминой подруги в университете задавали), но это максимум хорошая задача для того, чтобы прокачаться в регулярных выражениях. В реальных проектах почему-то мне всегда гораздо проще сделать отдельно простой лексер (из кучи маленьких и понятных регулярок) и уже отдельно анализировать синтаксис рекурсивным спуском или табличными парсерами.
Очень странно, я тоже клиент Альфа банка, в моём случае всё прямо противоположно — крайне быстро и удобно, никаких данных вбивать не приходилось ни разу.
Это всё конечно здорово, надеюсь, когда-нибудь прогресс дойдёт и до корректного отображения баланса на карте в тех случаях, когда выполняется списание не через приложение (обслуживание, онлайн покупки) — сейчас для того, чтобы увидеть изменённый баланс, необходим перезапуск.
Простите, но отношение периметра шестиугольника к длине описанной вокруг него окружности никак не может быть равно пи. Для правильного шестиугольника радиус описанной окружности равен длине его стороны. Таким образом, получаем периметр = 6*R, длина описанной окружности = 2*pi*R ≈ 6.28*R, ваше отношение равно 6/6.28 ≈ 0.955.
Если говорить про «запрет информации» — реальность такова, что на одного человека, который способен адекватно воспринять такую информацию, найдётся тысяча неадекватов, ставящих под угрозу здоровье и будущее своих детей.
Отчасти на базе этих интерфейсов построена, например, замечательная библиотека Rx.Net, рекомендую ознакомиться, если вы и правда испытываете такие проблемы.
В вашем случае, вы можете унаследовать свои источники событий от IObservable, а модель — от IObserver. Реализуете свою логику обработки поступающих данных в OnNext/OnError/OnCompleted, подписываете модель на источники событий, и оказывается, что количество источников вовсе не так уж и важно, да и если они отвалятся — ничего страшного не произойдёт.
Смотрите, есть два варианта (базовых, вариантов конечно же больше):
А теперь возьмите вариант #2, и представьте, что вам необходимо добавить поддержку ещё одной платформы.
Если вы не разрабатываете подобные программные системы — такие шаблоны вам без надобности.
Бывало, конечно, и такое, что приходилось делать анализ, например, списка объявлений переменных на Pascal/C/C# при помощи регулярного выражения (сыну маминой подруги в университете задавали), но это максимум хорошая задача для того, чтобы прокачаться в регулярных выражениях. В реальных проектах почему-то мне всегда гораздо проще сделать отдельно простой лексер (из кучи маленьких и понятных регулярок) и уже отдельно анализировать синтаксис рекурсивным спуском или табличными парсерами.