Как стать автором
Обновить
5
0.2

Бэкенд разработчик (.NET)

Отправить сообщение

Уведомления на разных платформах, какие они бывают? Бонус на смарт-часах Moto 360

Время на прочтение5 мин
Количество просмотров14K


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

Мы расскажем о том, как выглядят различные типы уведомлений на Chrome, Android, Safari, Firefox, iOS. Какие мы используем, какие можно использовать и не много о том, как оно работает.

Кстати попробовать практически все типы можно на нашем сайте.
Читать дальше →

3 способа использовать оператор?.. неправильно в C# 6

Время на прочтение4 мин
Количество просмотров26K
Наверняка вы уже знаете об операторе безопасной навигации ("?." операторе) в C# 6. В то время как это довольно хороший синтаксический сахар, я хотел бы отметить варианты злоупотребления этим оператором.
Читать дальше →

Как «Змейка» может познакомить с ООП: сложная концепция простыми словами

Время на прочтение9 мин
Количество просмотров68K
Здравствуйте! Вас приветствует редакция сайта GeekBrains.ru, сервиса онлайн-обучения программированию. Мы решили завести блог на Хабре! Уверены, что ещё успеем рассказать и обсудить много интересного из мира программирования, ИТ и онлайн-образования. Но начнём очень просто, без особых прелюдий, с обзора бесплатного курса по основам C# и ООП от одного из наших учеников. Слоган курса гласит «Сложная концепция простыми словами». Давайте же посмотрим, насколько это соответствует действительности.


Читать дальше →

Async/await и механизм реализации в C# 5.0

Время на прочтение20 мин
Количество просмотров81K

Подробно о преобразовании асинхронного кода, осуществляемого компилятором


Механизм async реализован в компиляторе C# при поддержке со стороны библиотек базовых классов .NET. В саму исполняющую среду не пришлось вносить никаких изменений. Это означает, что ключевое слово await реализовано путем преобразования к виду, который мы могли бы написать и сами в предыдущих версиях C#. Для изучения генерируемого кода можно воспользоваться декомпилятором .NET Reflector или ILSpy. Это не только интересно, но и полезно для отладки, анализа производительности и других видов диагностики асинхронного кода.
Подробности

App.Config и Custom Configuration Sections

Время на прочтение5 мин
Количество просмотров127K
Данная статья может показаться банальной, но иногда что-то полезное забывается, а читать на импортном языке лень и книжки под рукой нет. Поэтому я, обратившись к гуглу, нашел хорошее описание процесса создания обработчика конфигурационной секции файла app.config в .net приложениях, перевел его, дополнил замечаниями (курсив) и комментариями и решил опубликовать.

Я уверен, что многим из вас приходилось использовать файл конфигурации App.Config для хранения инициализирующих или конфигурационных данных приложения. И я так же уверен в том, что многим из вас хотелось создать в данном файле свои собственные структуры для хранения настроек. Но в итоге приходилось использовать встроенные возможности секции <appSettings> и получать значения, используя конструкцию вида:


ConfigurationManager.AppSettings["MyKey"]


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

Итак, для того что бы загрузить свою структуру данных из файла App.Config нам потребуются следующие классы:
  1. ConfigurationSection — Этот объект вернет нам пользовательскую секцию.
  2. ConfigurationElementCollection — Это собственно коллекция элементов, которые мы определим в пользовательской секции.
  3. ConfigurationElement — Это сам элемент, описывающий какую-от определенную вами сущность.


Приступим к реализации.

Поиск и чтение унаследованного кода

Время на прочтение20 мин
Количество просмотров27K
Вася — молодой программист. Получив задачу и засучив рукава, он берется за написание кода. Уже через день решение задачи готово, Вася запускает его… И сталкивается с неожиданной досадной ошибкой. Вася старательно исправляет ее и повторно запускает решение. В результате — снова неприятная ошибка. Так Вася долго наступает на грабли, пару раз значительно переписывает программу, пока, наконец, через неделю задача окончательно не решена.

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

Как найти нужный вам кусок исходного кода? Как его понять? А главное — зачем все это делать? В поиске ответов на эти вопросы добро пожаловать под кат.
Читать дальше →

Как я, в итоге, написал новую RTOS, протестированную и стабильную

Уровень сложностиСредний
Время на прочтение40 мин
Количество просмотров84K
Я работаю со встраиваемыми системами в течение нескольких лет: наша компания разрабатывает и производит бортовые компьютеры для автомобилей, зарядные устройства, и т.д.

image


Процессоры, используемые в наших продуктах — это, в основном, 16- и 32-битные микроконтроллеры Microchip, имеющие RAM от 8 до 32 кБ, и ROM от 128 до 512 кБ, без MMU. Иногда, для самых простых устройств, используются еще более скромные 8-битные чипы.

Очевидно, что у нас нет (разумных) шансов использовать ядро Linux. Так что нам нужна какая-нибудь RTOS (Real-Time Operating System). Находятся даже люди, которые не используют никаких ОС в микроконтроллерах, но я не считаю это хорошей практикой: если железо позволяет мне использовать ОС, я ее использую.

Несколько лет назад, когда мы переходили с 8-битников на более мощные 16-битные микроконтроллеры, мои коллеги, которые были гораздо более опытными, чем я, рекомендовали вытесняющюю RTOS TNKernel. Так что это — та ОС, которую я использовал в разных проектах в течение пары лет.

Не то, чтобы я был очень доволен ею: например, в ней нет таймеров. И она не позволяет потоку ждать сообщения сразу из нескольких очередей. И в ней нет программного контроля переполнения стека (это действительно напрягало). Но она работала, так что я продолжал ее использовать.
Читать дальше →

Устранение задержки синхронизации центрального и графического процессоров в игре Galactic Civilizations 3

Время на прочтение8 мин
Количество просмотров21K


Galactic Civilizations 3 (GC3) — это пошаговая глобальная стратегия, разработанная и выпущенная компанией Stardock Entertainment. Игра увидела свет 14 мая 2015 г. В ходе демонстрационного доступа и бета-тестирования мы собирали и анализировали информацию о производительности процессов рендеринга в этой игре. Одним из основных улучшений, которые нам удалось осуществить, стало устранение нескольких источников задержки синхронизации центрального и графического процессоров, в результате которой нарушался параллелизм в работе процессоров. В этой статье описывается выявленная проблема и найденное решение, а также рассматривается важность использования средств анализа производительности в процессе разработки с учетом преимуществ и недостатков этих средств.
Читать дальше →

Назад к истокам

Время на прочтение4 мин
Количество просмотров7.9K
Каскады в CSS – это проклятье и благословение в одно и то же время. Обычно они работают довольно неплохо, но встречаются проблемы, которые доводят людей до точки, так, что они начинают задаваться вопросом, нужен ли им на самом деле этот CSS. Я тоже в каком-то плане отношусь к таким людям, но я считаю, что виноваты не столько каскады, сколько борьба со спецификой. Не столкнуться с проблемами со спецификой сложно.

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

Шпаргалка Java программиста 2: Триста пятьдесят самых популярных не мобильных Java opensource проектов на github

Время на прочтение39 мин
Количество просмотров171K
Что это и зачем оно надо: Как известно, главное преимущество Java мира в том в нем существует огромное количество open-source проектов на на все случаи жизни, однако найти нужный на github'e не так просто, так как описание проекта часто мало информативно, зачастую сложно даже понять этот проект для Android'a или нет. В этой статье я автоматически и полуавтоматически собрал Java проекты, убрал старые и проекты только для Android'a, выбрал 350 набравших больше всего звезд, разделил по категориям и перевел описания.

Если вы хотите убедиться что базы данных пишут не только на C, найти проекты для работы с большими данными или нейронными сетями, пишите свой язык программирования для JVM и хотите посмотреть как это уже сделано или же просто хотите узнать какие новые возможности можно найти в Java мире open-source то это статья вам, думаю, может пригодится.

В чем смысл серии статей 'Шпаргалки Java программиста'
За время работы Java программистом я заметил, что как правило программисты постоянно и планомерно используют от силы 10-20% от возможностей той или иной технологии, при этом остальные возможности быстро забываются и при появлении новых требований, переходе на новую работу или подготовке к техническому интервью приходится перечитывать все документации и спецификации с нуля. Зато наличие краткого конспекта особенностей тех или иных технологий (шпаргалок) позволяет быстро освежить в памяти особенности той или иной технологии.


Другие статьи серии: часть 1. JPA и Hibernate в вопросах и ответах

Update: Внимание, актуальная версия со много большим количеством ссылок, находиться теперь в моем github'e проекте useful-java-links, по этой ссылке.


Читать дальше →

Один заказчик, два помещения, четыре провайдера и восемь связей

Время на прочтение5 мин
Количество просмотров22K
Один из заказчиков попросил сделать так, чтобы связь между его офисом и складом была постоянной и безопасной. Как мы это делали и что получилось, а что нет.
Читать дальше →

Надежное хранение и обновление данных во флэш памяти микроконтроллеров STM32 и MSP430

Время на прочтение8 мин
Количество просмотров28K
Часто возникает задача сохранить изменяемые данные, например конфигурацию, во флэш памяти микроконтроллера. Решение кажется простым, однако обеспечить надежность обновления данных при условии, что питание может отключиться в любой момент, оказывается весьма нетривиально, и даже использование контрольных сумм не решает проблему полностью. Из этой статьи вы узнаете
  • как устроена флэш память
  • к каким проблемам приводит выключение питания в момент записи или стирания
  • как эти проблемы решаются

Для желающих применить на практике — работающий код под STM32F4
Читать дальше →

Недопонимание про async/await и многопоточность в C#

Время на прочтение4 мин
Количество просмотров81K
Привет, Хабр! Тема async/await в .NET Framework и C# 5.0 не нова и объезженна: все давно знают, что это, как оно работает, все знакомы с тем скромным фактом, что это очень текучая абстракция и поведение зависит от SynchronizationContext. Об этом очень много писали на хабре, ещё чаще этот вопрос размусоливался в блогах различных респектабельных персон .NET-сообщества.

Тем не менее, мне очень часто приходится сталкиваться с тем, что не только новички, но и матёрые тимлиды не совсем понимают, как правильно пользоваться этим инструментом в разработке.
Читать дальше →

Магия тензорной алгебры: Часть 1 — что такое тензор и для чего он нужен?

Время на прочтение7 мин
Количество просмотров374K

Содержание


  1. Что такое тензор и для чего он нужен?
  2. Векторные и тензорные операции. Ранги тензоров
  3. Криволинейные координаты
  4. Динамика точки в тензорном изложении
  5. Действия над тензорами и некоторые другие теоретические вопросы
  6. Кинематика свободного твердого тела. Природа угловой скорости
  7. Конечный поворот твердого тела. Свойства тензора поворота и способ его вычисления
  8. О свертках тензора Леви-Чивиты
  9. Вывод тензора угловой скорости через параметры конечного поворота. Применяем голову и Maxima
  10. Получаем вектор угловой скорости. Работаем над недочетами
  11. Ускорение точки тела при свободном движении. Угловое ускорение твердого тела
  12. Параметры Родрига-Гамильтона в кинематике твердого тела
  13. СКА Maxima в задачах преобразования тензорных выражений. Угловые скорость и ускорения в параметрах Родрига-Гамильтона
  14. Нестандартное введение в динамику твердого тела
  15. Движение несвободного твердого тела
  16. Свойства тензора инерции твердого тела
  17. Зарисовка о гайке Джанибекова
  18. Математическое моделирование эффекта Джанибекова


Введение



Это было очень давно, когда я учился классе в десятом. Среди довольно скудного в научном плане фонда районной библиотеки мне попалась книга — Угаров В. А. «Специальная теория относительности». Эта тема интересовала меня в то время, но информации школьных учебников и справочников было явно недостаточно.



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



Читать дальше →

Библиотека, облегчающая разработку форм на сайтах

Время на прочтение7 мин
Количество просмотров30K
Привет, Хабр!

Хочу поделиться с общественностью своей небольшой (всего 6 Кбайт) js-библиотекой, которая сильно облегчает мне работу с формами при разработке сайтов, и позволяет сократить написание кода.
Читать дальше →

Обработка строк в Java. Часть II: Pattern, Matcher

Время на прочтение6 мин
Количество просмотров339K

Вступление


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

  1. String, StringBuffer, StringBuilder (реализация строк)
  2. Pattern, Matcher (регулярные выражения)

Сегодня поговорим о регулярных выражениях в Java, рассмотрим их механизм и подход к обработке. Также рассмотрим функциональные возможности пакета java.util.regex.
Читать дальше →

Как правильно создавать пользовательские исключения в C#

Время на прочтение5 мин
Количество просмотров56K

Для кого написана статья


Данная статья предназначена прежде всего для новичков в мире .NET, но может быть полезна также и разработчикам с опытом, которые не до конца разобрались, как правильно строить свои user-defined exceptions с помощью C#.

Пример кода для данной статьи можно скачать здесь.

Создание простого исключения


Создавать собственные типы исключений в C# рекомендуется в тех случаях, когда нужно четко отделить возникшую в написанном программистом коде исключительную ситуацию, от исключения, возникающего в стандартных типах .NET Framework.
Читать дальше →

Прогноз на Specification pattern в Domain layer — ожидаются проблемы

Время на прочтение3 мин
Количество просмотров20K
Data Access Layer – одна из наиболее больных тем.
Написание хорошего слоя доступа к данным – это не тривиальная задача. Примеров реализации невероятно много, но адекватных среди них единицы.
Можно ли считать реализацию шаблона Repository — DAL?
Вот что предлагают MS msdn.microsoft.com/en-us/library/ff649690.aspx
image
А вот и местные работы habrahabr.ru/post/52173
Варианты довольно нормальные.
Но когда я вижу
«Репозиторий – это фасад для доступа к базе данных.»
Читать дальше →

Kolab Groupware (Часть 1 — Обзор)

Время на прочтение5 мин
Количество просмотров40K


Привет, Хабр! Хочу рассказать тебе о довольно интересной и функциональной замене MS Exchange, полностью свободной и к тому же с красивой web-мордой. Разговор пойдет про Kolab — свободный почтовый сервер с поддержкой совместной работы, календарей, списков дел, WebDAV, ActiveSync синхронизацией и прочими плюшками, который можно использовать как для работы, так и для дома.

Осторожно, в посте много картинок...
Уже хочу!

Протокол WS2812B на STM32 без пустых циклов и прерываний. И как сделать правильную радугу

Время на прочтение6 мин
Количество просмотров104K


На Хабре уже есть пара статей о работе с RGB светодиодами WS2112B, но почему-то они все используют довольно архаичный способ формирования битовой последовательности. Способ заключается в формировании точных интервалов времени с помощью пустых программных циклов. Возможно, это издержки использования Arduino, но мы, конечно, уже давно перешли на ARM Cortex-M4 в лице STM32 и можем себе позволить сделать красивее.
Читать дальше →

Информация

В рейтинге
2 486-й
Откуда
Стамбул, Стамбул, Турция
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
Ведущий
От 7 000 $
C#
.NET
Entity framework
MongoDB
Apache Kafka
DDD
Высоконагруженные системы
Проектирование архитектуры приложений
Elasticsearch