Обновить
113.1

C# *

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

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

Шаблон Data Dependency

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

Введение


В этой статье я расскажу про Data Dependency шаблон реализации компонентов в условиях Dependency Injection. В примерах буду использовать язык C# и Unity.
Начнем с описания ситуации, в которой Dependency Injection оказывается недостаточно, и возникает потребность прибегнуть к Data Injection.
Читать дальше →

StringBuilder прошлое и настоящее

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

Вступление


Моя прошлая статья была посвящена особенностям строкового типа данных String в .NET. Эта статья продолжает традицию, однако на этот раз мы рассмотрим класс StringBuilder.

Как известно, строки в .NET являются неизменяемыми (не используя unsafe), а поэтому проводить с ними операцию конкатенации в больших количествах не самая лучшая идея. Это значит, что следующий код имеет весьма серьезные проблемы с нагрузкой на память:

string s = string.Empty;
for (int i = 0; i < 100; i++)
 {
    s += "T";
 }
Читать дальше →

Пишем игрушечную ОС на C#

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

Введение


Здравствуй, хабрасообщество! Не знаю, будет ли этот топик полезен кому-либо, но надеюсь, что вы почерпнете здесь для себя что-то новое. Цель данной статьи — познакомить хабраюзеров с проектом COSMOS и показать, как можно реализовать собственную ОС, заточенную под Ваши нужды. Кому интересно — прошу под кат.
Читать дальше →

Элегантные строки

Время на прочтение4 мин
Количество просмотров16K
Представим, что нам нужно что-нибудь сделать со строками в .net. Что-то не очень сложное, но и не совсем простое. Например, для правильного форматирования, расставить пробелы после запятых в тексте. Что же предлагает .net из коробки?
Что-то такое:

string str = "...";
str.Replace(",", ", ");


Постойте, но мы же хотели расставлять пробелы, а не заменять запятые!..
Хорошо, пойдем дальше.

Особенности строк в .NET

Время на прочтение10 мин
Количество просмотров111K
Строковый тип данных является одним из самых важных в любом языке программировании. Вряд ли можно написать полезную программу не задействовав этот тип данных. При этом многие разработчики не знают некоторых нюансов связанных с этим типом. Поэтому давайте рассмотрим кое-какие особенности этого типа в .NET.

Итак, начнем с представления строк в памяти


В.NET строки располагаются согласно правилу BSTR (Basic string or binary string). Данный способ представления строковых данных используется в COM (слово basic от языка программирования VisualBasic, в котором он первоначально использовался). Как известно в C/C++ для представления строк используется PWSZ, что расшифровывается как Pointer to Wide-character String, Zero-terminated. При таком расположении в памяти в конце строки находится null-терминированный символ, по которому мы можем определить конец строки. Длина строки в PWSZ ограничена лишь объемом свободной памяти.
Читать дальше →

GPS мониторинг авто или домашнее задание на вечер

Время на прочтение6 мин
Количество просмотров73K
Здравствуйте! Однажды, задумавшись о безопасности своего автомобиля, я прошелестел достаточно много ресурсов с информацией об автомобильных противоугонных системах в том числе и с GPS. Но все было либо не то, что нужно, либо достаточно дорого, да и сопутствующие сервисы мне особым функционалом не нравились, да и признаться есть доля паранойи во мне. В общем, главной отпугивающей причиной для меня стало — делить с кем-то информацию о своем местоположении. В итоге была куплена обычная сигнализация с авто запуском и обратной связью, но речь сейчас немного о другом.

Все же мысли о сохранении информации о положении авто у меня крутились в голове, да и хотелось просто найти интересное занять на досуг. НА этих мыслях я решился на покупку т. н. персонального GPS — трекера. Особо к моделям не присматривался, у все примерно одно и тоже, но очень важной особенностью такой как настройка на собственный сервер обладали не многие из перебранных кандидатов. В итоге мой выбор пал на персональный GPS трекер китайской компании Xexun — Xexun TK102-2. После еще нескольких часов выискивания как все настраивается и кучи различных мануалов я решил, что нужно уже купить и посмотреть что это такое. Кому интересна информация о трекере и о написании собственного «сервера» для трекера, прошу подкат.
Читать дальше →

Админка за 10 минут

Время на прочтение4 мин
Количество просмотров145K
Здравствуйте, уважаемое Хабрасообщество!

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

Долгое время я использовал Twitter Bootstrap, но он не мог удовлетворить все потребности. Приходилось верстать дополнительные кнопочки и писать скрипты. Но вот однажды, я познакомился с замечательным UI-фреймворком KendoUI от Telerik. Что из этого получилось под катом.

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

Реализация пула объектов на языке C#

Время на прочтение8 мин
Количество просмотров56K
Доброго времени суток!
В этой статье я расскажу, как повысить производительность многопоточного (и не только) C#-приложения, в котором часто создаются объекты для «одноразовой» работы.
Немного про многопоточность, неблокирующую синхронизацию, использование встроенного в VS2012 профилировщика и небольшой бенчмарк.
Читать дальше →

Перенос сайта из Visual Studio 2012 на хостинг. Панель управления Parallels Plesk Panel

Время на прочтение5 мин
Количество просмотров33K
Здравствуйте!

Про разработку сайта на ASP.NET MVC 3/4 написано достаточно. По крайне мере, что б начать само развиваться. однако почти ничего не написано про то, как его перенести на хостинг / сервер. Мне, как человеку, пришедшему с линукс хостингов и ПХП сама панель, папки, да и компиляция проекта — все было в новинку. Есть мануалы — если достаточно долго помучатся, то можно выГуглить. Однако оказалось, что запросы «выложить сайт, перенос сайта, развернуть сайт, создать сайт» практически не дают результата. Или листать нужно достаточно далеко. Правильный запрос в данной ситуации «публикация сайта». Однако на Хабре есть всего Создание сайта Windows Azure Web Site и развёртывание там приложения ASP.NET MVC 4 и Публикация сайта ASP.NET MVC в обновленный Windows Azure. однако это по Azure.

Так же, столкнулся с проблемой, что нет возможности напрямую опубликовать сайт сразу из Visual Studio 2012 на хостинг — стоит прокси, который не дает это сделать. хотя подключиться через FileZilla — позволяет. Не знаю в чем проблема, ходил к администраторам — они развели руками и сказали что проблема в моей Windows 8 Pro. Ладно. Не такая и проблема.

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

Начну с хостинга. панель выглядит так:

Осторожно картинки!
Читать дальше →

ASP.NET MVC, WebApi, SignalR и UnityContainer

Время на прочтение15 мин
Количество просмотров31K
Известно, что все хорошие джедаи используют внедрение зависимости (перевод) в своих проектах, это увеличивает концентрацию мидихлориан в крови и тестируемость кода в приложении. В данной статье я хочу рассмотреть некоторые аспекты использования UnityContainer в ASP.NET приложении, а именно, использование инжекции зависимостей через конструкторы контроллеров в ASP.NET MVC и WebApi и хабов в SignalR. Пример приложения присутствует.

Dependency Injection - Golf analogy
Читать дальше →

Использование dynamic для быстрого создания Xml

Время на прочтение2 мин
Количество просмотров5.6K
Не так давно разрабатывал функционал, формирующий по некоторому алгоритму разнообразный xml.
Логично, что при написании первого же теста возник традиционный вопрос ленивого программиста: как сэкономить себе силы, а читающим тесты нервы и быстро и наглядно представить, что же я хочу получить?
Поэтому придумал такой вот способ:
Читать дальше →

Экономическая стратегия «Сахалинская колония»

Время на прочтение5 мин
Количество просмотров25K
Сахалинская колония — экономическая стратегия, цель которой, выжить. Игроку дается типовое, либо случайно сгенерированое игровое поле, поделенное на ячейки.
Каждая ячейка представляет собой определенный ресурс, либо чистое поле. В начале игры игроку дается здание администрации и 2 участка земли, на которых он может строить ресурсодобывающие строения. Все строения со временем разрушаются и требуют ремонта — за деньги вырученные от продажи ресурсов. Здание администрации является основным — невозможность его ремонта приводит к окончанию игры.
Выйти в плюс по доходам непросто, и редкий, но дорогой ремонт администрации часто ломает красиво выстроенные планы.



Краткая информация о разработке, ссылки

Описание связей с помощью 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.
Читать дальше →

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

ASP.NET MVC 4 RAZOR Динамическое многоуровневое меню из БД

Время на прочтение5 мин
Количество просмотров24K
Как и обещал в предыдущем посте DropDownList, Задать «value» для default option в MVC 4, сегодня расскажу про построение динамического многоуровневого меню с бесконечной вложенностью, хранящееся в БД MsSQL. Помню в свое время на ПХП это тоже было задачкой на пару дней. Но для MVC 4 с движком RAZOR — еле разобрался, хотя в итоге как всегда ничего сложного или сверхъестественного. Статья рассчитана на тех, кто делать это не умеет. Если Вы знаете как сделать лучше — поделитесь. Приступим.

Сей мануал предполагает, что Вы уже оперируете знаниями, полученными при ознакомлении с этими статьями: Entity Framework в приложении ASP.NET MVC. Или этими: ASP.NET MVC 4 Tutorials

1) Сначала нужно разобраться со структурой БД. Это главное. С теорией можно ознакомиться в статье Иерархические структуры данных в реляционных БД. Мы будем использовать максимально простую структуру, называемой «структура со ссылкой на предка».
Читать дальше →

DropDownList, Задать «value» для default option в MVC 4

Время на прочтение3 мин
Количество просмотров20K
Здравствуйте. Больше двух лет создавал сайты на ПХП и все было прекрасно. Но в один прекрасный день проснулся и понял, что пхп — хорош, но не то. Потом рассматривал еще долго на чем лучше писать веб приложения, сравнивал, анализировал. В итоге остановился на C# и ASP.NET MVC 4. Даже после Zend Framework 2 — MVC 4 просто нечто: легко, красиво, просто, быстро, мало кода.

Но вот столкнулся с проблемой, решение которой в Гугле не нашел. Как вывести выпадающий список и задать значение по умолчанию. Думаю для «бывалых» — это будет не проблема. Это то, что один раз «проехать» и больше никогда не вспомнишь, что были проблемы с этим. но вот проехать для новичка бывает довольно затруднительно. Если честно, то поначалу было просто вывести выпадающий список тяжко. Хотя мануалы по ASP.NET MVC на порядок превосходят «Быстрый старт» для любого фреймворка пхп.

Сей мануал предполагает, что Вы уже оперируете знаниями, полученными при ознакомлении с этими статьями: Entity Framework в приложении ASP.NET MVC. Или этими: ASP.NET MVC 4 Tutorials

Начнем с вывода Выпадающего списка.
1) Модель. Аннотаций и связей нету для упрощения примера.
Читать дальше →

Настраиваемая авторизация в Asp.Net MVC

Время на прочтение9 мин
Количество просмотров47K
Привет Хабраюзер! Хотел бы поделиться с сообществом своим небольшим опытом разработки на фреймворке ASP.NET MVC. А именно очень важной частью аутентификации пользователей в приложении. А так же реализации системы безопасности, основанной на ролях.
Данная статья скорей всего будет полезна начинающим программистам, использующим ASP.NET MVC в качестве платформы для разработки. Но возможно и «бывалые» (опытные) пользователи подчерпнут для себя какие-нибудь идеи. Критика, предложения и тому подобное приветствуется. Всех заинтересовавшихся прошу под кат.
Читать дальше →

Использование Razor отдельно от ASP.NET MVC

Время на прочтение4 мин
Количество просмотров11K
По роду деятельности студентом мне часто приходится писать различные лабораторные и курсовые работы. Неотъемлемая часть этих работ(как и в 80% задач бизнес-программирования) — код составления отчета о найденных элементах в базе данных или выполненной длительной и сложной операции. В десктопном программировании в рамках .NET Framework есть различные способы решения подобных проблем:
  • Старая школа: формат RTF никто не отменял, однако вручную составить что-либо сложнее цветного текста со шрифтами разного цвета и ссылками лично у меня не получалось. Способ действенный, но стандарт не самый легкий для понимания, на последнюю версию даже смотреть страшно
  • Для Silverlight/WPF — формирование FlowDocument своими руками. Объектная модель однозначно удобнее формирования старого формата вручную, но вариант тоже только для смелых
  • Сторонние решения вроде Crystal Reports, возможно и очень мощный инструмент для создания отчетов, но не всегда в этом есть необходимость, к тому же не всегда есть возможность тянуть пару-тройку дополнительных программных продуктов1
  • Использование Microsoft Office Interop. Нет, это издевательство. Ручная работа с памятью в управляемой среде вызывает лишь бурю радости. Начинающий программист выпьет не одну упаковку кофе, прежде чем смирится с подобным принципом работы.
  • Формирование HTML. На нашу радость, стандарт позволяет создать документы средней степени форматированности, с помощью CSS можно довести до ума. Минусы — оформить документ по всем требованиям крайне затруднительно. Но это если в этом есть необходимость. Плюсы: простота стандарта и всеобщий переход «в облака и браузеры» стимулирует развитие HTML.

О последнем я и буду вести речь.
Читать дальше →

Размещаем до 2000 юнитов (XNA)

Время на прочтение6 мин
Количество просмотров20K
Привет, в этом посте будет представлено немного кода, пару картинок и несколько видео, про то, как я реализовывал быстрый алгоритм взаимодействия ракет и юнитов на XNA (2000 — 3000 юнитов) и не только.



Далее

Пишем эмулятор Кубика Рубика

Время на прочтение20 мин
Количество просмотров79K
OpenGL — платформонезависимая спецификация, описывающая программный интерфейс для создания компьютерных приложений, использующих двухмерную и трехмерную графику.
В этой статье я опишу, как можно создать эмулятор Кубика Рубика на OpenGL.

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


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

Универсальный код C# под .NET и JavaScript

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

Введение


Приветствую вас, хабравчане. В данном топике я хотел бы осветить подробности разработки на C# под разнородные целевые платформы, в первую очередь такие как .NET и браузер (JavaScript). В качестве примера желающие могут изучить веб-сервис по обработке фотографий gfranq.com, в котором реализована клиентская и серверная обработка фотографий с помощью фильтров, а также функциональность коллажей на основе материала, описанного в данной статье.

Так как я не умею подбирать картинки для привлечения внимания, то она будет по теме:


Технические подробности под катом

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