Все потоки
Поиск
Написать публикацию
Обновить
272.79

C# *

Объектно-ориентированный язык программирования

Сначала показывать
Период
Уровень сложности

Использование Yandex MapKit совместно с элементами управления Pivot и Panorama

Время на прочтение4 мин
Количество просмотров6.3K
Основная страница нашего приложения построена с использованием элемента управления Pivot, на одной из закладок которого необходимо было разместить карту с информацией о местоположении автомобиля. Пользователям нашего приложения было решено предоставить выбор между сервисами карт от компании Микрософт и компании Яндекс.

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

Однако с интеграцией элемента управления для отображения карт входящего в Yandex.Map MapKit от компании Яндекс возникли неожиданные сложности. Попытки манипуляции картой в горизонтальной плоскости приводили к переключению текущей закладки элемента управления Pivot.
Читать дальше →

Безопасное использование HTTP заголовка IfModifiedSince в PCL библиотеках

Время на прочтение2 мин
Количество просмотров3K
Неожиданно связь прервалась Мы разрабатываем приложение под несколько платформ, всю платформонезависимую часть создаем с помощью PCL, стараясь добиться максимального уровня переиспользования компонентов. Для коммуникаций с сервером используется класс HttpWebRequest который реализует всю необходимую от транспортного уровня функциональность.

Недавно протокол был оптимизирован, в нем появилась возможность сократить объем передаваемых данных указывая горизонт актуальности. Реализована данная оптимизация с помощью обработки HTTP заголовка IfModifiedSince, однако у объекта HttpWebRequest в PCL не доступного свойство IfModifiedSince. Это не казалось проблемой заголовок был добавлен напрямую в коллекцию заголовков запроса.

request.Headers[HttpRequestHeader.IfModifiedSince] = timeStamp.ToString();

Протестировав решение на WindowsPhone приложении я убедился в его работоспособности, но все юнит тесты транспортного уровня выдали ошибки.
Читать дальше →

WCF RIA Services. Внедряем паттерн Model-View-ViewModel (MVVM). Часть 4

Время на прочтение9 мин
Количество просмотров10K
WCF RIA Services. Начало. Часть 1
WCF RIA Services. Получение данных. Часть 2
WCF RIA Services. Обновление данных. Часть 3
WCF RIA Services. Внедряем паттерн Model-View-ViewModel (MVVM). Часть 4

Вступление


Паттерн Model-View-ViewModel (MVVM) используется для создания слабо связанных приложений на Silverlight и WPF. В данном курсе мы не будем рассматривать основы данного подхода, а просто узнаем как внедрить его в наш проект, который мы создавали на протяжении 3 уроков. Если не внедряться в дебри, то MVVM – это одна из альтернатив, которая является логическим развитием таких паттернов программирования как MVC и MVP и полностью поддерживает привязку данных, команды, и все возможности, которые предоставляют Silverlight и WPF. Модель вида (ViewModel) отвечает за предоставление виду (View) всех необходимых ресурсов. То есть предоставляются все необходимые свойства для того, что б вид мог легко осуществлять привязку данных, создание команд, а в модели вида тем временем присутствует и работает вся необходимая приложению логика. Структурно, устанавливаемый «DataContext» равен экземпляру модели вида, с которым происходит связывание данных (binding).

Основным преимуществом такого подхода является практически полная независимость вида от модели вида, что грубо можно выразить, как независимую разработку каждой части программистом и дизайнером. Так же, приятным следствием такого разделения является достаточная легкость создания модульных текстов (unit test), так как логика абсолютно не связана с UI (интерфейсом пользователя).

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

Шаг 1: Создание модели вида


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

Что быстрее? foreach vs. List.ForEach vs. for-loop

Время на прочтение4 мин
Количество просмотров49K
Сегодня (прим. переводчика: т.е. 6 лет назад) я перебирал список List, используя конструкцию foreach, и чувствуя небольшое самодовольство, осознавая насколько это производительнее, того что было бы, попытайся я использовать ArrayList. Благодаря чуду Generic компилятор C# аккуратно избегает многочисленные упаковочные операции с помощью экземпляров System.Collections.Generic.IEnumerator вместо старых System.Collections.IEnumerator. Тогда я подумал: "действительно ли это самый быстрый способ?" По результатам расследования, получается, что, нет, это не самый быстрый способ.
Читать дальше →

На мгновение быстрее: измеряем время упаковки и распаковки значимых типов данных

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

Доброго дня, Хабр!



Многие неопытные разработчики не всегда знают и понимают, что же происходит за кулисами их кода. Сейчас речь пойдет об упаковке и распаковке значимых типов данных (по-русски это звучит ужасно, поэтому «boxing and unboxing value types»).
Под катом небольшой пример и измерение времени выполнения.
Читать дальше →

Древовидный список на ASP.NET MVC 4

Время на прочтение3 мин
Количество просмотров17K
Добрый день! На хабре есть статья, в которой рассказывается как сделать древовидный список. Однако, в этой версии будет использован движок Razor, Entity Framework и др., а так же реализованы операции со списком. Данный вариант отличается простотой и быстротой реализации. Статья рассчитана на тех, кто уже знаком с ASP .NET MVC.

Возможности:
  • Отображение списка
  • Добавление элементов
  • Перемещение элементов
  • Удаление элементов

Используемые технологии:
  • Microsoft ASP. NET MVC 4
  • Entity Framework
  • Linq to Entity
  • Microsoft SQL Server (Local DB)

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

Порядок полей в соответствии с порядком в коде (C#)

Время на прочтение2 мин
Количество просмотров8K
При работе с отражением (Reflection) порядок отраженных полей не гарантируется. Обычно это не имеет значения, но иногда нужен порядок в точном соответствии порядку определенному в коде. Например, это бывает необходимо для частичной сериализации.
Для решения этой надуманной проблемы мы воспользуемся сервисами межъязыкового взаимодействия.

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

Способ извлечь данные из базы 1С

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


Хочу поделиться способом выгрузки данных из 1С на основе COM-соединения. Этот вариант можно назвать альтернативным использованию стандартных и нестандартных обработок 1С. Для примера взят язык C#, а выгрузка выполняется в один большой XML-файл.
Читать дальше →

Решение транспортной задачи при помощи генетического алгоритма как часть SOA

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

Решение транспортной задачи при помощи генетического алгоритма как часть SOA



Приветствую уважаемое Хабрасообщество!

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

Формулировка задачи



Википедия формулирует задачу следующим образом — задача об оптимальном плане перевозок однородного продукта из однородных пунктов наличия в однородные пункты потребления на однородных транспортных средствах (предопределённом количестве) со статичными данными и линеарном подходе.

Например – необходимо спланировать доставку бутылей воды по городу, известны потребности каждого заказчика, грузоподъёмность транспортных средств и расстояния между точками.

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

Разбор пакетов NetFlow v.9 на C#

Время на прочтение7 мин
Количество просмотров21K
NetFlow это сетевой протокол, созданный компанией Cisco Systems для учёта сетевого трафика. Наиболее распространёнными версиями данного протокола являются 5 и 9. Девятая версия более гибкая так как используются шаблоны, согласно которым присылаются данные. В пятой версии данные присылаются согласно спецификации.
image

Система сбора информации о трафике по протоколу NetFlow состоит из следующих компонентов:
  • Сенсор. Устройство (маршрутизатор, L3-коммутатор) собирающее статистику по проходящему через него трафику;
  • Коллектор. Занимается сбором данных от сенсора и помещает их в хранилище;
  • Анализатор. Анализирует данные, которые собрал коллектор и формирует отчёты.


О разработки части функций анализатора на C#, а точнее разбор пакетов NetFlow я и расскажу
Читать дальше →

Руководство разработчика Prism — часть 2, инициализация приложений Prism

Время на прочтение11 мин
Количество просмотров32K
Оглавление
  1. Введение
  2. Инициализация приложений Prism
  3. Управление зависимостями между компонентами
  4. Разработка модульных приложений
  5. Реализация паттерна MVVM
  6. Продвинутые сценарии MVVM
  7. Создание пользовательского интерфейса
    1. Рекомендации по разработке пользовательского интерфейса
  8. Навигация
    1. Навигация на основе представлений (View-Based Navigation)
  9. Взаимодействие между слабо связанными компонентами

Эта глава рассказывает о том, что нужно сделать для загрузки приложения Prism. Приложение Prism требует регистрации и конфигурации компонентов во время запуска – этот процесс известен как bootstrapping.

Что такое загрузчик (Bootstrapper)


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

Основные этапы процесса загрузки.
Читать дальше →

Описание связей с помощью Code First Fluent API

Время на прочтение6 мин
Количество просмотров37K
Пытаясь более подробно разобраться с мануалами по ASP.NET MVC 4 столкнулся с такими понятиями как Fluent API, Code First, аннотации и многими другими. По Fluent API оказалось не так и много информации. Особенно на русском. Смотрим.

Подход Code First в Entity Framework позволяет использовать свои собственные доменные классы для представления модели, которую EF использует для построения запросов, отслеживания изменений и обновления. Code First использует паттерн программирования, который называется соглашение конфигураций. Это означает, что Code First считает, что Ваши классы следуют соглашением схемы, которую EF использует для концептуальной модели. В этом случае EF сможет использовать необходимые детали для выполнения своих функций. Однако, если Ваши классы не используют правильно соглашения, Вы можете добавить необходимую конфигурацию вручную, для того, что б EF смог правильно понимать их.

Используя подход Code Firs, Вы можете определить эти конфигурации двумя способами. Первый — использовать простые атрибуты, называемые аннотациями (DataAnnotations). Второй – использовать Fluent API, который позволяет описывать конфигурации императивно в коде.

В данной статье внимание уделено настройке с помощью Fluent API. Конвенции Code Firs очень удобно использовать для описания отношений между классами, основанных на свойствах, указывающих на потомков или отдельные классы. Если в Ваших классах нет внешних ключей, Code Firs может сам их создать. Но бывают случаи, когда описание класса не предоставляет достаточно информации относительно отношений, что б Code Firs смог правильно все понять и правильно добавить «не хватающие» части.

Рассмотрим модель



Начнем с двух простых классов «Blog» и «Post», где Blog имеет отношение один-ко-многим к Post.
Читать дальше →

Создание собственного контрола на основе TabControl в C#

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


В один момент возникла задача сделать TabControl по отрисованному дизайну, с вкладками с левой стороны. Сложность была в том, что проект был уже написан с использованием winform, и переделывать его целиком не хотелось. Попытался реализовать эту задачу средствами класического TabControl, но встретился со множеством проблем, связанных с этим.
Читать дальше →

Ближайшие события

Запрет чтения свойств модели в ASP.NET MVC

Время на прочтение3 мин
Количество просмотров6.3K
В моей прошлой статье был рассмотрен один из возможных вариантов защиты от редактирования свойств модели в Web приложениях, написанных на ASP.NET MVC. Данная статья будет посвящена рассмотрению одного из вариантов запрета чтения некоторых свойств модели конкретными ролями пользователей.
Читать дальше →

TextBox с печеньками при помощи User Control, Windows Phone/Store

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

Здравствуйте, уважаемые хаброжители!

Сегодня мы попробуем создать свой собственный TextBox с дополнительными удобствами.

Сразу скажу, что их будет только два:
Placeholder, также известный, как «текст по умолчанию»;
Clear Button — очень удобная в мире планшетов вещь, позволяющая быстро очистить содержимое нашего текстового поля.

Для туториала приведён пример Windows Phone-приложения, но держу пари, что оно же будет работать и с WPF, и с Silverlight. В Windows Store-приложениях есть кнопка очищения по умолчанию, но Placeholder добавляется так же.

Сразу хочу выразить благодарность @Useless_guy за отличную наводку в виде библиотеки компонентов The Windows Phone Toolkit.
Также, советую обратить внимание на библиотеку Coding4Fun.
Действительно, если нет особой надобности создавать свои UserControls — следует использовать готовые работающие решения.

Итак, приступим!
Читать дальше →

Отображение генерируемых «на лету» html страниц без сохранения в буфер обмена или файловую систему

Время на прочтение3 мин
Количество просмотров13K
Часто при разработке перед программистом встаёт вопрос об отображении результатов работы пользователю в удобном для него виде. Благо вариантов реализации вывода информации несметное множество. Так, одним из них является web-страница, как очень гибкое решение, позволяющее оформить данные в любом виде.

Однако, временами, простая на первый взгляд проблема усложняется какими-то ограничениями. К примеру, из-за недостатка прав доступа может возникнуть ситуация невозможности использования файловой системы. Иными словами, результаты нельзя будет сохранять в файл. А использование буфера обмена может повлечь за собой уничтожение важной информации хранящейся в нём.

О том, как показать пользователю html страницу, не имеющую локального представления под катом.
Читать дальше →

Watermark для TextBox-а в Windows 8 приложениях

Время на прочтение4 мин
Количество просмотров6.6K
В последнее время, стало модным, помимо поясняющей надписи для TextBox-а еще и на самом TextBox-е писать некоторую подсказку. Должно все это выглядеть так, как на картинке для привлечения внимания. Пока пользователь ничего не ввел, подсвечивается подсказка. Если пользователь ввел текст, то подсказка не показывается. Не бог весть, какая сложная логика, но т.к. у ControlTemplate в Windows Store приложениях отобрали триггеры, то придется это делать не стилем, а именно новым элементом управления.
Под катом, будем пошаговое руководство, по разработке такого компонента, ориентированное на тех, кто первый раз подходит к разработке своих элементов управления. Для тех, кто уже программирует под Windows Store откровений не будет, но если не сложно, выложите рекомендации в комментариях, может кто-то действительно решит сделать хороший элемент управления для такой задачки.
Читать дальше →

Dependency injection в MVC 3 Framework на примере Autofac

Время на прочтение4 мин
Количество просмотров15K
В настоящее время трудно представить себе приложение на MVC3Framework без использования Dependency injection. Это статья рассчитана на тех кто знает, что такое DI, но никогда не использовал Autofac для этого.
Так же отмечу что более подробно об Autofac вы сможете прочитать тут

Для начала мы должны скачать и включить библиотеки Autofac в проект. Для этого я использую NuGet. Введите в консоли:
PM> Install-Package Autofac Устанавливаем сам Autofac
PM> Install-Package Autofac.Mvc3 И дополнения к Mvc3

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

Сжатие пакетов и защита С# клиента с открытым исходным кодом

Время на прочтение2 мин
Количество просмотров2.7K
Привет, сообщество.

Мой путь в программировании: ASP VB script >> VB.Net >> C#, с С и С++ я знаком минимально.
С давних пор пишу онлайн RPG (около 9 лет) и сейчас дошел до стадии публичного онлайн тестирования.

Клиентская часть написана на С# и доступна для изучения(улучшения) всеми желающими.
У меня нет никакой паранойи (надеюсь ;-)) относительно хакеров и любителей поломать чужие сервера — я отлично понимаю, что никому нет дела до моих исходников, однако мне хочется, чтобы на сервер отсылались пакеты, обработанные только известной, проверенной и утверждённой версией клиента.
Поэтому я хочу реализовать защиту в виде подключаемой приватной нативной библиотеки, которая будет отсылать на сервер хеш код используемого клиента, плюс она-же будет шифровать/дешифровать/сжимать/разжимать все пакеты. То есть если в клиенте реализуют отсылку фиктивного хешь кода, без использования нативной DLL, то злоумышленнику также придется реализовать свою версию обработки пакетов.
Читать дальше →

Hosts Commander — консольный редактор hosts для Windows и Linux

Время на прочтение3 мин
Количество просмотров7.6K
Hosts Commander призван максимально облегчить работу с файлом hosts из консоли. Если вам время от времени приходится забираться в этот файл (что характерно для веб-разработчика), и вы любите консоль — Hosts Commander может прийтись вам по душе.
Год назад на Хабрахабре была анонсирована первая версия программы, которая работала только под Windows. Но с тех пор многое изменилось и стало лучше. Это отличный пример, как из простой идеи может вырасти нечто большее.
Читать дальше →

Вклад авторов