Продолжаем говорить о производительности и оптимизации кода. Сегодня поговорим о том, как и зачем оценивать сложность алгоритмов, а также наглядно покажем, как эта сложность влияет на производительность кода.
Пользователь
Климатическая система в квартире своими руками
Примерно с декабря 2015 по июнь 2016 года я читал форумы, катался по строительным магазинам, собирал систему в квартире и на балконе, паял контроллер и писал прошивку — и добился своего.
В этой статье я собираюсь похвастаться результатом и рассказать, как устроена моя установка. Полностью описать процесс сборки в одной статье невозможно, но, надеюсь, краткое описание окажется интересным для тех, кто хочет дышать свежим тёплым воздухом. Если кратко, то моя установка устроена так:
Code Signing сертификаты или сертификаты разработчика. Виды, как выбрать
Code Signing сертификаты — это сертификат, которым подписывается программное обеспечение или скрипты, который подтверждает автора программы и гарантирует, что код не был изменен, после того, как была наложена цифровая подпись. Также их еще называют сертификаты разработчика.
Итак сертификаты разработчика предоставляют нам несколько возможностей. Во-первых это механизм цифровой подписи, которая подтверждает, что программа, которой вы пользуетесь действительно выпущена той или иной компанией, то есть гарантирует подлинность источника. А во вторых гарантирует целостность содержимого, то есть, что с момента подписания программный продукт не был поврежден или изменен.
Моя модернизация Byndyusoft.Infrastructure | DDD + CQRS + WebApi
→ Ссылка на реализацию
Немного модернизации и я получил вполне универсальный рабочий шаблон.
Для всех, кто не знаком с DDD можно начать с wiki.
В конце мы получим связку с DDD + CQRS + Entity Framework + OData + WebApi + Log4Net + Castle Windsor + Kendo UI.
Реактивные приложения с паттерном RxPM. Прощайте MVP и MVVM
Уже продолжительное время я размышляю над паттерном RxPM и даже успешно применяю его в «продакшене». Я планировал сначала выступить с этой темой на Mobius, но программный комитет отказал, поэтому публикую статью сейчас, чтобы поделиться с Android-сообществом своим видением нового паттерна.
Все знакомы с MVP и MVVM, но мало кто знает, что MVVM является логическим развитием паттерна Presentation Model. Ведь единственное отличие MVVM от PM – это автоматическое связывание данных (databinding).
В этой статье речь пойдет о паттерне Presentation Model с реактивной реализацией биндинга. Некоторые ошибочно называют его RxMVVM, но корректно будет называть его RxPM, потому что это модификация шаблона Presentation Model.
Этот паттерн удобно использовать в проектах с Rx, так как он позволяет сделать приложение по-настоящему реактивным. Кроме того, он не имеет многих проблем других паттернов. На диаграмме ниже представлены различные варианты и классификации шаблонов представления:
Entity Framework 6 (7) vs NHibernate 4: взгляд со стороны DDD
Функторы, аппликативные функторы и монады в картинках
И мы знаем, как к нему можно применить функцию:
Элементарно. Так что теперь усложним задание — пусть наше значение имеет контекст. Пока что вы можете думать о контексте просто как о ящике, куда можно положить значение:
Теперь, когда вы примените функцию к этому значению, результаты вы будете получать разные — в зависимости от контекста. Это основная идея, на которой базируются функторы, аппликативные функторы, монады, стрелки и т.п. Тип данных
Maybe
определяет два связанных контекста:data Maybe a = Nothing | Just a
Позже мы увидим разницу в поведении функции для
Just a
против Nothing
. Но сначала поговорим о функторах!Async/await и механизм реализации в C# 5.0
Подробно о преобразовании асинхронного кода, осуществляемого компилятором
Механизм async реализован в компиляторе C# при поддержке со стороны библиотек базовых классов .NET. В саму исполняющую среду не пришлось вносить никаких изменений. Это означает, что ключевое слово await реализовано путем преобразования к виду, который мы могли бы написать и сами в предыдущих версиях C#. Для изучения генерируемого кода можно воспользоваться декомпилятором .NET Reflector или ILSpy. Это не только интересно, но и полезно для отладки, анализа производительности и других видов диагностики асинхронного кода.
Как мы попробовали DDD, CQRS и Event Sourcing и какие выводы сделали
Руководство разработчика Prism — часть 8.1, навигация на основе представлений (View-Based Navigation)
Оглавление
Навигация на основе представлений (View-Based Navigation)
Несмотря на то, что навигация на основе состояний может быть полезна в сценариях, описанных ранее, тем не менее, навигация в приложении часто требует замены одного представления на другое. В Prism, такой вид навигации называется «навигация на основе представлений (view-based navigation)».
В зависимости от требований к приложению, процесс навигации может быть довольно сложным и требующим аккуратной координации. Ниже перечислены некоторые из трудностей, с которыми можно столкнуться при реализации навигации на основе представлений:
- Цель навигации — контейнер для добавляемых, или удаляемых представлений — может обрабатывать навигацию разными способами при добавлении и удалении представлений, или может визуализировать процесс навигации по-разному. Во многих случаях, целью навигации является обычный
Frame
, илиContentControl
, и представления просто отображаются внутри этих элементов управления. Однако существует множество сценариев, когда целью навигации является другой вид элементов управления, таких какTabControl
, илиListBox
. В таких случаях, навигация может потребовать активации или выделения уже существующего представления, или добавление нового представления. - Приложению часто будет требоваться, каким-либо образом идентифицировать представление, к которому должна быть выполнена навигация. Для примера, в web-приложениях, страница, к которой выполняется навигация, напрямую идентифицируется по URI. В клиентских приложениях, представление может быть идентифицировано по имени его типа, по расположению файла ресурсов, или множеством других способов. В составных приложениях, состоящих из слабо связанных модулей, представления зачастую определены в раздельных модулях. Отдельные представления, в таких случаях, должны иметь возможность быть идентифицированы без создания дополнительных зависимостей между модулями.
- После идентификации представления, процесс его создания и инициализации должен быть тщательно скоординирован. Это особенно важно при использовании паттерна MVVM. В таком случае, представления и соответствующая модель представления должны быть созданы и ассоциированы друг с другом во время совершения навигации. В случае использования контейнера внедрения зависимостей, такого как Unity, или MEF, при создании модели представления и/или представления может потребоваться использование особого механизма конструирования.
- MVVM паттерн позволяет отделить UI приложения от его логики взаимодействия с пользователем и бизнес-логики. Однако процесс навигации может охватывать как UI, так и логику приложения. Пользователь может начать навигацию внутри представления, в результате чего представление будет обновлено. Но часто будет требоваться возможность инициировать и скоординировать навигацию из модели представления. Важным аспектом для рассмотрения, является способность чётко разделить навигационное поведение между представлением и моделью представления.
- Приложению часто может потребоваться передавать параметры, или контекст, представлению для его корректной инициализации. Для примера, если пользователь производит навигацию к представлению для редактирования информации о выбранном клиенте, ID этого клиента, или его данные, должны быть переданы в представление, для отображения в нем корректной информации.
- Многим приложениям необходимо тщательно координировать навигацию для уверенности, что будут выполнены определённые бизнес-требования. К примеру, пользователю может быть показано всплывающее сообщение о некорректности введённых им данных, во время попытки навигации к другому представлению. Этот процесс требует координации между предыдущим и новым представлениями.
- Наконец, большинство современных приложений позволяют пользователю производить навигацию к предыдущему, или к следующему представлению. Аналогично, некоторые приложения реализуют свой рабочий процесс, используя последовательность представлений, или форм и позволяют пользователю производить по ним навигацию вперёд или назад, добавляя или редактируя данные, перед тем, как завершить задачу и отправить все сделанные изменения одним пакетом. Такие сценарии требуют некоторого механизма журналирования, для того, чтобы последовательность навигации могла быть сохранена, повторена, или предопределена.
Prism предоставляет руководство по решению этих проблем, расширяя механизм регионов для поддержки навигации. Следующие разделы содержат краткую сводку о регионах Prism и рассказывают о том, как они были расширены для поддержки навигации на основе представлений.
Хэппи энд для хот энда, или наша сила – в плавках
Доброго вам времени суток, уважаемые гики и сочувствующие! О чём может мечтать холодными зимними вечерами оборудованный 3D принтером гик? Наверное, о солнечных берегах Копакабаны. Или о бездонных глазах знойных бразильянок. Но в Копакабане разгул преступности, а супруга не поддерживает идею полигамии даже в рудиментарном виде. Вот и приходится самому обеспечивать себя горячими штучками, да публиковать результаты для розжига дискуссии.
Полезные мелочи с Kickstarter
В этом обзоре мы рассмотрим несколько проектов с Kickstarter, которые помогут сделать вашу 3D-печать еще немного лучше. Некоторые из этих проектов уже завершены в рамках Kickstarter и перешли на стадию серийного производства, другие “не взлетели” по тем или иным причинам, но могут подкинуть идейку-другую, а какие-то все еще на стадии краудфандинга и в них можно поучаствовать.
Cicerone — простая навигация в Андроид приложении
На этой схеме не скелет древнего обитателя водных глубин и не схема метро какого-то мегаполиса, это карта переходов по экранам вполне реального Андроид приложения! Но, несмотря на сложность, нам удалось её удачно реализовать, а решение оформить в виде небольшой библиотеки, о которой и пойдет речь в статье.
Китайцы собираются построить мощную солнечную электростанцию в зоне отчуждения ЧАЭС
Зона отчуждения Чернобыльской АЭС, ранее именовавшаяся просто «30-километровой зоной» — это запрещенная для свободного доступа территория. Она подверглась интенсивному загрязнению радионуклидами после аварии на Чернобыльской атомной электростанции. Зона включает в себя несколько прилегающих регионов, включая север Иванковского района и север Полесского района Киевской области, плюс несколько других регионов. На территории запрещена всякая хозяйственная деятельность, хотя там и живут люди (по большей части — неофициально).
Из-за своей близости к столице Украины и ряду особенностей зона отчуждения привлекает к себе внимание инвесторов и промышленников. В апреле этого года уже сообщалось о том, что наиболее зараженную 10-километровую зону вокруг ЧАЭС планируют превратить в свалку радиоактивных отходов. Глава Государственного агентства Украины по управлению Зоной отчуждения Чернобыльской АЭС Виталий Петрук сказал тогда следующее: «Люди не могут жить на загрязненной земле еще 500 лет, поэтому мы планируем сделать ее промышленным комплексом». К счастью, есть и более интересные варианты эксплуатации простаивающих земель. Один из них — постройка в зоне отчуждения солнечной электростанции.
Сравнение конфигураций Dependency Injection фреймворков
Много раз я спрашивал себя, что какой IoC контейнер подойдет для того или иного проекта. Их производительность — это только одна сторона медали. Полное сравнение производительности можно найти здесь. Другая сторона медали — простота и скорость обучения. Так что я решил сравнить несколько контейнеров с этой точки зрения и взял Autofac, Simple Injector, StructureMap, Ninject, Unity, Castle Windsor. На мой взгляд, это наиболее популярные IoC контейнеры. Вы можете найти некоторые из них в списке 20 лучших пакетов NuGet и также я добавил другие по своим предпочтениям. Лично мне очень нравится Autofac и во время работы над этой статьей я еще больше утвердился, что это лучший выбор в большинстве случаев.
Здесь описываются основы IoC контейнеров, таких как конфигурация и регистрации компонентов. Есть мысль так же провести сравнение управления lifetime scope и продвинутых фитч. Примеры кода можно найти в репозитории LifetimeScopesExamples GitHub.
Повышаем эффективность работы в Xamarin.Forms
Друзья! Очередная статья на тему разработки мобильных приложений на Xamarin. Мы не прекращаем рассматривать особенности использования Xamarin.Forms при разработке бизнес-приложений для iOS и Android. Все статьи из колонки можно найти и прочитать по ссылке #xamarincolumnВ прошлой статье мы рассмотрели, как можно повысить продуктивность при разработке мобильных приложений с использованием Xamarin, а также отметили базовые механизмы повышения производительности бизнес-приложений на базе Xamarin.Forms.
В сегодняшнем материале мы продолжим выбранный курс и расскажем об использовании Fody для сокращения необходимого программного кода, а также узнаем об использовании иконочных шрифтов и библиотеки NControlView для ручной отрисовки интерфейсных элементов.
Что такое бизнес-приложения?
Для того, чтобы мы с вами находились на одной странице и использовали одинаковые понятия, давайте для начала определимся с тем, чем же бизнес-приложения отличаются от игр и других типов программ.
Готовим Xamarin.Forms: настройка окружения и первые шаги
Друзья! Мы продолжаем колонку на тему разработки мобильных приложений на Xamarin. И
после небольшого перерыва готовы вернуться к рассмотрению особенностей использования Xamarin.Forms при разработке бизнес-приложений для iOS и Android. Все статьи из колонки можно будет найти и прочитать по ссылке #xamarincolumn
В сегодняшней статье мы рассмотрим вопросы производительности приложений и оптимизации самого процесса разработки.
Правильные пчелы
В замечательной сказке про Винни-Пуха пчелы делились на правильных и неправильных. Аналогично и окружения, в которых будет идти разработка приложений могут быть условно разделены на правильные и неправильные.
Начнем мы с компьютеров, на которых будет идти разработка.
Все уроки по ардуино
Установка Android планшета NEXUS 7 2013 вместо магнитолы в Mazda MX-5 – часть 1/2
И вы сможете завтракать в пробках с ютубом
Рекомендации по написанию кода на C# от Aviva Solutions
Целью создания этого списка правил является попытка установить стандарты написания кода на C#, которые были бы удобными и практичными одновременно. Само собой, мы практикуем то, что создали. Эти правила являются одним из тех стандартов, которые лежат в основе нашей ежедневной работы в AvivaSolutions. Не все эти правила имеют четкое обоснование. Некоторые из них просто приняты у нас в качестве стандартов.
Статический анализатор кода VisualStudio (который также известен как FxComp) и StyleCop могут автоматически применять многие из правил кодирования и оформления путем анализа скомпилированных сборок. Вы можете сконфигурировать их таким образом, чтобы анализ производился во время компиляции или был неотъемлемой частью непрерывной или ежедневной сборки. Этот документ просто добавляет дополнительные правила и рекомендации, но его вспомогательный сайт www.csharpcodingguidelines.com предоставляет список правил анализа кода, необходимых в зависимости от того, с какой базой кода вы работаете.
Information
- Rating
- Does not participate
- Location
- Архангельская обл., Россия
- Date of birth
- Registered
- Activity