Обновить
89.02

C# *

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

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

Подготовка к сертификационному экзамену Microsoft 70-483 «Programming in C#»

Время на прочтение13 мин
Охват и читатели104K

Во время подготовки к экзамену номер 70-483 нашел множество разрозненных сайтов с различными ссылками на мануалы, которые мне немного помогли. Но, что помогло мне больше, так это то, что я составил для себя памятку на нескольких страницах, выдержками из которой и хочу поделиться.
Целью не является подробное описание C#, целью является освежить в памяти и заострить внимание на некоторых необходимых темах. Если какие-то темы вам незнакомы, то это значит, что у вас есть пробелы, которые необходимо устранить.
Раскрывать вопросы тестирования я не могу (да и не помню я уже их), но, если многие из перечисленных ниже нюансов, трюков и тонкостей, помогут вам, то вы на меня не обижайтесь (написано с иронией).
Читать дальше →

Что должен знать тимлидер и как мы составляли программу второго дня конференции Go#

Время на прочтение5 мин
Охват и читатели10K
Добрый день, читатели Хабра!

Сразу скажу, что целевая аудитория поста и события: руководители в разработке на C#/.Net, в том числе тимлидеры и менеджеры проектов. И те, кто планирует переходить на руководящую позицию.

Я поделюсь логикой формирования программы второго дня конференции Go#.
Мы взяли темы, которыми должен владеть человек на руководящей позиции в разработке. При этом конкретная имплементация этих знаний должна быть специфична для экосистемы C#/.Net.

Для мероприятия с одним треком программа получилась концентрированной. Расписание включает 10 докладов по 15-30 минут, обед в кафе и кофе брейки – и все это с 10.00 до 17.00.

Темы: от архитектуры .Net приложений до механики решений по формированию команд и распределению задач. И, конечно же, управление проектом и исходным кодом. Докладчики представят две полярные парадигмы – классическую Application Lifecycle Management на базе TFS и альтернативные подходы с применением Git и DevOps инструментов.

Наши спикеры начинали как C#/.Net разработчики, но многие имеют опыт руководства коллективами и проектами с десятками и даже сотнями разработчиков.

Сайт тимлидерского дня конференции Go# – www.gosharp.ru/TLD2014


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

Consulo: ~1000 коммитов, или как прошла осень

Время на прочтение3 мин
Охват и читатели17K
Для тех, кто пропустил мои посты:

Consulo — это форк IntelliJ IDEA Community Edition, который имеет поддержку .NET(C# на текущий момент, и на этот сектор пока идет большой акцент), Java, Javascript(NodeJS) и многое другое. Проект собрал множество открытых плагинов в себе. При этом код остался открытым.

Несмотря на то, что многие мои знакомые уже вовсю используют его в production разработки Unity3D под Mac OS, я все еще не могу похвастаться stable релизом.


Ниже я расскажу вам, как прошла моя осень, и как эти три месяца постоянной работы повлияли на плагины .NET + C#, и на многое другое.
Читать дальше →

ЭкаунтоЛогика 1.0

Время на прочтение7 мин
Охват и читатели25K


Хочу поделиться с уважаемой публикой.

Год-полтора назад я выступал на Хабре с предложениями о создании сетевой бухгалтерии нового типа. Найти человека, который бы воплотил идею в программном коде, не удалось (кто бы сомневался?), и через некоторое время я дошел до такой степени одичания отчаяния, что решился написать программный код самостоятельно.

Сказано – сделано: изучил язык программирования, насколько это оказалось в моих слабых бухгалтерских силах, и написал.

Ниже предлагается синопсис того, что в итоге данной интеллектуальной эпопеи получилось – во всяком случае, того, как это задумывалось. Надеюсь, специалисты в области бухгалтерского софта смогут оценить новизну реализованной в программе методологии – хотя понимаю: это заведомо сложней, чем позубоскалить над усилиями новичка-«программиста».

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

.NEXT 2014 Moscow: Финальное расписание, спонсоры, стенды и пара спойлеров

Время на прочтение4 мин
Охват и читатели6.3K
Всем привет!

Пришла зима, и вот уже через неделю вслед за ней придёт и конференция .NEXT — без ложной скромности, главное .NET-событие года в России.



Несколько дней назад мы провели голосование на хабре по поводу того, какие из докладов пользуются наибольшей популярностью. Вот наиболее популярные из них:
  1. 68% — Тимур timyrik20 Гуев — C# 6.0: Roslyn и другие нововведения
  2. 59% — Андрей andreycha Часовских — Async/await: собираем грабли
  3. 52% — Михаил Щербаков — Что и как нужно защищать в .NET-приложении
  4. 52% — Dino Esposito — ASP.NET vNext: What it means to you and what it means to Microsoft
  5. 49% — Роман Белов — Memory & Performance. Tips & Tricks
  6. 48% — Дмитрий Иванов — Принципы построения многопоточных десктопных .NET-приложений на примере ReSharper
  7. 44% — Кирилл Скрыган — Cложности создания больших приложений и пути их решения на примере ReSharper
  8. 44% — Станислав sidristij Сидристый — Как работает CLR и как заставить его работать по-другому
  9. 43% — Андрей DreamWalker Акиньшин — Поговорим о различных версиях .NET
  10. 42% — Никита kekekeks Цуканов — Использование Linux в качестве платформы для серверных .NET-приложений
  11. 41% — Игорь SychevIgor Сычев — Entity Framework 7 + Redis/AzureTableStore


Мы провели ряд тренировок (как по скайпу, так и вживую). Если из голосования видно, что не все заявленные темы являются популярными, то тренировки показали, что не все из докладчиков на популярные темы полностью готовы.

Именно поэтому в финальном расписании некоторые популярные в голосовании доклады попадают во второй и третий залы, а на их место встают другие. Ну и от ограничений никуда не денешься: у нас только 7 слотов в главном зале (не считая кейнота от Дино Эспозито).
Расписание

.NEXT 2014 Moscow: разбиваем доклады по залам вместе

Время на прочтение10 мин
Охват и читатели7.1K
Всем привет!

И снова я, и снова движуха, и снова речь пойдёт о предстоящей конференции .NEXT

Коротко

  • Только технические доклады, только хардкор!
  • 8 декабря, понедельник, Москва, гостиница Radisson Славянская; (площадь Европы, дом 2, метро Киевская);
  • 22 технических доклада о настоящем и будущем платформы .NET;
  • некогда скучать — доклады одновременно в 3 залах;
  • 500 участников (Middle и Senior-разработчики).


Что будет

  • это независимая .NET-конференция .NEXT 2014 Moscow;
  • Выступает легендарный Дино Эспозито, автор серии книг по ASP.NET;
  • и ещё ведущие разработчики компании JetBrains;
  • и кроме того, лучшие авторы .NET-блогов на хабрахабре;
  • Темы: от внутренностей CLR до новейших инструментов для .NET-разработки:
    C# 6.0, ReSharper, CLR, FitNesse, WinRT, F#, WinPhone, Security, Roslyn, JIT, async/await, Mono, DLR, PostSharp, AutoFixture, Concurrency.


Цены

Билеты от 4 000 рублей.
Московский Middle/Senior .NET-разработчик в день зарабатывает больше.

Сайт конференции — dotnext.ru

В чём проблема?

Доклады будут идти параллельно в трёх залах: одном большом на 550 человек и двух малых на 120 человек каждый. При это есть риск случайно поставить популярный доклад в маленький зал и тем самым создать там толпу и недовольных людей.

Как решаем?

Голосованием на хабре! Под катом — 22 доклада (по 1-2 абзаца о каждом) и голосовалка в конце. Именно на основании её результатов мы и распределим доклады по залам разного размера.



22 абзаца о докладах

Извлечение данных из фотохостинга

Время на прочтение6 мин
Охват и читатели26K
Наткнулся однажды на этот пост и мне подумалось — раз у нас есть такая прекрасная, полностью открытая галерея частных данных (Radikal.ru), не попытаться ли извлечь из нее эти данные в удобном для обработки виде? То есть:

  • Скачать картинки;
  • Распознать текст на них;
  • Выделить из этого текста полезную информацию и классифицировать ее для дальнейшего анализа.


И в результате, после нескольких вечеров, работающий прототип был сделан. Много технических деталей:
Читать дальше →

ASP.NET vNext приложение под Ubuntu

Время на прочтение3 мин
Охват и читатели29K
Я хочу рассказать про мой опыт развертывания ASP.NET vNext под Ubuntu 14.04. Сам я долгое время разрабатываю под Windows и дела с Unix системами если и имел, то вскользь и незаметно для меня и для Unix систем. Но, несмотря на это, новости о переводе части .Net в OpenSource с поддержкой Unix меня порадовали как повод для дальнейшего развития и расширения границ знаний.

В результате недолгих мучений и исследований различных форумов и issue трекеров мне удалось то, что раньше казалось немыслимым. Код написанный на C#, который запускается в среде придуманной и разработанной в MS, который представляет из себя ASP.NET MVC приложение (!) заработал.
Читать дальше →

F.A.Q. по конференции .NEXT 2014 Moscow

Время на прочтение5 мин
Охват и читатели6.8K
8 декабря мы проведём в Москве большую .NET-конференцию .NEXT 2014 Moscow. Мы получили множество коментов в соцсетях и на хабре, а так же несколько писем с вопросами о конфе. Чтобы не отвечать несколько раз, я собрал наиболее часто задаваемые вопросы здесь, в одном месте. Я попробовал сгруппировать эти вопросы по темам, и в результате получился полноценный FAQ.

Q: Зачем нужна еще одна .NET-конференция?

A: Современные конференции для программистов грешат всякими аджайлами, скрамами и прочими стартапами и клаудами, и поэтому мы с JetBrains решили провести конференцию для .NET-программистов, состоящую только из докладов на технические темы.



Q: Где и когда она проходит?

A: Москва, пн, 8 декабря, гостиница «Рэдиссон Славянская», ст.м. Киевская.
Начало — в 10:00, окончание — в 20:00. Обратите внимание, что это понедельник.

Q: Кто ваши «конкуренты»?

A: DevCon от Microsoft, DotNetConf от Александра Бындю, Go# от Николая Евдокимова из ITHH. Комментировать эти конференции я сейчас не буду. Если интересно — сходите по ссылкам и почитайте.

Q: Чем вы отличаетесь от них?

A: Как я уже писал двумя пунктами выше, нас не интересуют продвижения стартапов, рынки зарплат, гибкие методологии и «новые возможности для вашего бизнеса.» Мы предпочитаем концентрироваться на одной вещи, которую мы понимаем, умеем и любим. На технологии.
FAQ по .NEXT 2014 Moscow

Пишем и запускаем приложения ASP.NET vNext на Маке

Время на прочтение3 мин
Охват и читатели16K
ASP.NET восстала из пепла и делает уверенные шаги к завоеванию мира! Во первых Microsoft открыла часть исходников .NET и продолжает их открывать. Новая версия ASP.NET vNext с самого начала open source и размещена на GitHub. Во вторых отныне .NET будет кроссплатформенным, ровно как и разрабатываемый веб-сервер. А это значит, что веб-приложения на ASP.NET vNext вы сможете разрабатывать в своих уютных Макашечках и Убунточках.
Чем я незамедлительно и решил воспользоваться.
ИМХО. Думаю вам не надо объяснять о красивом синтаксисе C#, строгой типизации и высокой скорости работы.
Что касается ASP.NET, то раньше все было печально, но за последние несколько лет MS достигла большого прогресса в разработке ASP.NET MVC веб-фреймворка взяв лучшие практики из RoR, Laravel и других. А когда несколько месяцев назад они официально объявили что открывают исходники своего фреймворка и становятся кроссплатформенными, пламя любви к ним вспыхнуло вновь.

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

Поговорим про отличия Mono от MS.NET

Время на прочтение9 мин
Охват и читатели78K


С каждым днём кроссплатформенная разработка под .NET становится всё более реальной. А после недавнего анонса официальной поддержки Linux/MacOS счастливое будущее стало ещё немножечко ближе. Вышеприведённая картинка утратила свою былую актуальность, ведь исходники теперь будут под MIT. Впрочем, писать кроссплатформенные .NET-приложения можно достаточно давно — в этом нам помогает Mono. Но вот отношение к нему в сообществе довольно неоднозначное. Мне зачастую приходится слышать изречения вроде «Mono тупит, под него всё в три раза медленнее работает» или «Под Mono вообще нормально ничего не запускается». Причём очень редко доводится слышать от этих людей конкретные факты. Вопросы «А что конкретно тупит?» или «А что конкретно не работает?» повергают их в ступор. Не всех (некоторые способны на конструктивную дискуссию), но большинство. Чаще всего начинаются возмущённые ответы в духе «Да вообще ничего не работает! А если и работает, то очень медленно!». В конце беседы создаётся впечатление, что каждая конечная машинная команда под Mono работает в несколько раз медленнее, а в половине исходников стоят throw new Exception().

В этом посте мне хотелось бы немножко поделиться опытом. Не так давно мы портировали наш продукт PassportVision (анонс на Хабре) под Linux. Могу заявить, что работает он вполне нормально. Да, чутка медленнее, чем под Windows на классическом .NET от Microsoft (далее — MS.NET). Но работает вполне стабильно, а падение производительности не принципиальное. При этом продукт у нас достаточно большой и вполне попадает под категорию enterprise, а возможности C#/.NET мы используем на полную катушку. Так что завести большое серверное приложение под .NET реально — было бы желание. Также мне довелось беседовать с разными разработчиками, которые пишут что-то под Mono — истории в большинстве своём успешные.

Но почему же тогда встречается столько негатива в сторону Mono? Я считаю, что проблема в том, что люди не особо хотят разбираться в разнице между рантаймами. Запустили разок какое-нибудь .NET-приложение под Linux на Mono 2.4, а оно с ходу не запустилось — всё, Mono целиком плохой, не будем его использовать. А в итоге виноват оказывается один-единственный метод, у которого реализация немного отличается от MS.NET. Новые версии Mono выходят раз в пару месяцев, реализацию уже давно поправили, но люди всё равно продолжают ходить и хаять бедный Mono, не желая разбираться в деталях.

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

Что будет нового на .NEXT и почему это будет хорошо

Время на прочтение2 мин
Охват и читатели11K
107 из 137 хабраюзеров, которые участвовали в голосовании о теме доклада Дино Эспозито на конференции .NEXT (8 декабря 2014, Москва, Radisson Славянская), могут быть вдвойне довольны: во-первых, Дино расскажет о том, за что они голосовали — ASP.NET vNext: What it means to you and what it means to Microsoft. Во-вторых, здесь и сейчас мы коротко напомним, какие еще доклады будут на .NEXT в этот раз, а также расскажем, как докладчики стараются, чтобы на конференции их было приятно слушать.



Итак, кроме Дино на .NEXT будут:
и что, впрямь стоит туда пойти?

Авторегистрируемые в Unity репозитории на .net для EF Code first

Время на прочтение5 мин
Охват и читатели7.1K
Привет. Приступим.

Мотивация

  1. Есть проект с Entity framework (>= 5.0.0.0) code first.
  2. Вы любите IoC, но не любите бесконечные регистрации новых сущностей.
  3. В качестве контейнера используется Unity (или есть возможность потратить 10 минут на допиливание исходников под свой контейнер).
  4. Перспектива написания однотипного кода почему-то отпугивает вас.

Итак, что предлагает эта статья. Вы подключаете 2 nuget-пакета, реализуете для своих Entity простой интерфейс IRetrievableEntity<TEntity, TId> (можно упростить задачу, отнаследовавшись от готового класса Entity<TId>), добавляете в код 2 строки регистрации и получаете на выходе полную независимость от DBContext и возможность резолвить репозитории для каждой IRetrievableEntity-сущности с возможностью построения объектно-ориентированных (типизированных) запросов к этим репозиториям. Только посмотрите:
var employeeRepository = container.Resolve<IRepository<Emloyee, int>>();
var employees = employeeRepository.Get(q =>
{
    q = q.Filter(e => e.EmploymentDate >= new DateTime(2014, 9, 1));
    if(excludeFired)
        q = q.Filter(e => !e.Fired);
    q = q.Include(e => e.Department, p => p.Department.Chief)
            .OrderBy(p => p.FirstName);
});

Как быстро начать использовать

из коробки

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

Инфраструктура команд для вызова пользователем действий в шаблоне MVVM

Время на прочтение10 мин
Охват и читатели11K
Представим типичный пользовательский интерфейс. Есть несколько элементов управления, которые запускают некоторые повторяемые (за время жизни приложения) действия разной сложности. Чтобы сложные действия, такие как обращение к различным носителям, обращение к сети или сложное вычисление, не снижали отзывчивость интерфейса, они должны быть асинхронными. Дополнительно могут быть элементы управления, отменяющие асинхронно запущенное действие. Действие имеет свойство состояния (неактивно, запущено, завершено успешно, завершено с ошибкой, отменено), которое тем или иным образом отображается пользователю. Принятый в WPF, Silverlight и WinPhone шаблон проектирования MVVM диктует, чтобы такое «действие» было частью модели представления, давая возможность вызывать сервисы модели из пользовательского интерфейса без создания между ними жёсткой связи. К сожалению, такое «действие» в базовой библиотеке классов не реализовано. Ближайшие имеющиеся в библиотеке сущности, такие как задачи System.Threading.Tasks.Task, команды System.Windows.Input.ICommand и делегаты System.Delegate, не подходят: задачи всегда одноразовые и не могут представлять повторяемое действие, делегаты и команды не поддерживают отмену и не содержат свойств состояния, а команды вообще не могут быть асинхронными. Далее я предлагаю решение в виде небольшой библиотеки классов, дающей возможность легко использовать описанные «действия» в ваших приложениях.
Читать дальше →

Писать плагины с AppDomain — весело

Время на прочтение12 мин
Охват и читатели21K
Как часто вы писали плагины для своих приложений?

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

Кто хочет повелосипедить — вперед под кат.
Читать дальше →

Локализация по кнопке «Build»

Время на прочтение2 мин
Охват и читатели2.8K
Здравствуйте, Друзья!

В статье вкратце расскажу о том, как применить локализацию к вашему приложению с помощью DevUtils ELAS for Microsoft Translation, это расширения для DevUtils ELAS Core.
Подробности

Адаптация ZenCoding к C# — ZenSharp

Время на прочтение3 мин
Охват и читатели11K
Многие наверняка знают, что для HTML & CSS существует великолепный инструмент ZenCoding(emmet), который позволяет очень сильно упростить ввод рутинных конструкций языка, определяя специальный язык мнемоник. C# менее многословный язык, чем Html, но тем не менее, ввод его конструкций можно здорово оптимизировать.
Я предлагаю динамическое расширение идеи мнемоник, впервые услышанное мною от Дмитрия Нестерука [1].

proto

sample

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

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

.NET Framework скоро Open Source и на *nix

Время на прочтение1 мин
Охват и читатели92K

Основное

  • Reference Source для .NET 4.6 перелицензируется под MIT;
  • В дальнейшем фреймворк будет с открытыми исходниками и поставляться по частям через NuGet, можно будет с приложением поставлять свою сборку, которая будет изолирована от всего остального;
  • Разработка переезжает на GitHub;
  • Скоро откроют исходники рантайма, включая RyuJit и сборшик мусора;
  • Для всего этого счастья планируется официальная поддержка никсов.





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

Портативная дистрибуция .Net приложений с отчетами Microsoft Report Viewer и Oracle Instant Client

Время на прочтение7 мин
Охват и читатели12K


Довольно часто возникает необходимость или желание отказаться от создания инсталлятора и совершать дистрибуцию приложения, копируя папку с файлами на целевой компьютер. Если вам интересно как создать портативный дистрибутив .Net приложения с отчетами Report Viewer или как портативно скопировать клиента и драйвера для доступа к базе Oracle, прошу под кат. Я постараюсь все подробно объяснить.

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

Еще одна простая стейт машина для Unity

Время на прочтение6 мин
Охват и читатели22K


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

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