Search
Write a publication
Pull to refresh
287
0.2
Владимир @32bit_me

Программист

Send message

Обёртка для foreach

Reading time3 min
Views3.3K
В последнее время меня стала раздражать громоздкость кода, неповоротливые конструкции и наличие лишних строк.
Простой foreach в соответствии с codestyle превращается минимум в 4 строки текста
foreach(var element in collection)
{
  // Do something
}

* This source code was highlighted with Source Code Highlighter.
Поэтому образовалась вот такая обёртка.
Читать дальше →

«Скрытые» полезности С#

Reading time8 min
Views8.3K
Предлагаю мой вольный перевод вопроса с stackoverflow, который мне показался полезным и сидит в фаворитах. Что-то я взял с MSDN (в основном вырезки из русской редакции), что-то -с блогов.
Все мы, С# разработчики, знаем базовые комманды C#. Я имею ввиду объявления, условия, циклы, операторы и т.д.
Некоторые из нас знают даже про Generics, anonymous types, lambdas, linq,…

Но, каковы реально скрытные возможности и трюки C#, про которые даже фанаты и эксперты не всегда знают?
Составим список некоторых из них:

Катаморфизм в F#

Reading time9 min
Views7.1K

Введение


Упомяну сразу, данная статья написана по мотивам целой серии постов в отличном блоге Inside F#. Тем не менее она не является переводом в чистом виде, а скорее вольным изложением, чтобы доступным языком объяснить — что же за зверь такой, катаморфизм, и с чем его едят. Слово это думаю не очень на слуху, чего стоит хотя бы тот факт, что статьи по нему нет в русской википедии (и вообще ни в одной национальной, кроме почему-то голландской. Наверно ФП как-то соответсвует духу травокурения)
Итак, строго говоря, катаморфизм в функциональном программировании — это обобщение свертки списков, которые (как я уже рассказывал) являются специфическим типом размеченного объединения, на произвольные размеченные объединения.
Читать дальше →

Новые возможности .NET 4.0: C# 4.0

Reading time7 min
Views9K
После выхода Visual Studio 2010 beta 1 — первым делом нужно разобраться, что же дает нового нам C# 4.0 (так как это мой основной язык программирования — для меня это является важным). Первым делом должен вам порекомендовать примеры C# 4.0, которые можно скачать отсюда (там же есть документ New Features in C# 4.0, которая послужила основой для этого топика). Документацию по .Net Framework 4.0 beta 1 можно посмотреть в MSDN. Дальше будут следовать мой небольшой опыт знакомства с новой версией .NET.
 
Читать дальше →

Языки предметной области Domain-Specific Languages (DSL)

Reading time1 min
Views2.8K

Что это?


Это некоторая форма компьютерных языков, разрабатываемых для специфичной предметной области. Это то, что позволяет вам (разработчикам ПО) лучше взаимодействовать с носителями “доменных знаний”. А так же позволяет более лаконично оформлять бизнес-логику. Это то, что представляет собой, к примеру, SQL, Linq, многое из синтаксиса Ruby On Rails.
Читать дальше →

Рисуем pie график

Reading time3 min
Views7.5K
Как-то понадобилось добавить в проект симпатичный 3-d pie график.
Пока толпа решала на какой компонент потратить денежку, нарисовал вот такой вот график:

image

Кому надо, делюсь кодом прототипа, он минимален:

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

Потоки в .NET. Часть 1

Reading time4 min
Views14K
Этот топик дает начальные сведения об использовании потоков на платфоре .NET. Это мой первый пост на Хабре, поэтому не судите очень строго. Также хотелось бы услышать конструктивную критику о том, как можно улучшить материал.
Читать далее

Трюки языка C#

Reading time4 min
Views20K

ИМХО, вместо того, чтобы вкручивать собеседникам мозги насчет заумной семантики event’ов и делегатов или же спрашивать когда написание new IEntity() легально, можно задать вопрос попроще – например “приведите пример необычного поведения или использования языка C#”. Вот несколько примеров, которые пришли в голову в качестве возможных ответов.



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

C# 4.0, и несуществующие методы

Reading time6 min
Views3.3K
Предупреждение: Нижеследующее многие сочтут извращением с C#. Возможно конечно это и не так, но я Вас предупредил:).

В Ruby есть интересная особенность для перехвата вызовов несуществующих методов. В таких случаях Ruby вызывает метод вашего класса с названием «method_missing». Автор этого текста показывал пример этого на IronRuby в другой статье.

Для динамических языков это может быть нормой, но в статически типизированных языках такого не бывает.

Не было до текущего момента!(Барабанная дробь)
Читать дальше →

В дженериках C# мог бы быть полезен “this type”

Reading time2 min
Views3.7K
Разбирая наш код, нашел место, которое явно требовало бы некоторой подчистки. Но чтобы почистить, в языке нужна бы еще фича, которую и хочу обсудить. Я поднимал этот вопрос также и на StackOverflow. Был поддержан авторитетным камрадом.

Возьмем два класса, один наследуют от другого. Базовый класс – дженерик, в котором есть метод, который в производном закрытом типе должен возвращать экземпляр этого самаого закрытого типа.
Читать дальше →

Асинхронное программирование — цепочки вызовов

Reading time6 min
Views5.5K

Когда в коде фигурирует пара вызовов BeginXxx()/EndXxx(), это приемлимо. Но что если алгоритм требует несколько таких вызовов подряд, то количество методов (или анонимных делегатов) преумножится и код станет менее читабельным. К счастью, эта проблема решена как в F# так и в C#.



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

«Множества» в C#

Reading time3 min
Views14K
Снова пишу про то, что, в общем-то, известно =) Но если где-то нужно передать в качестве аргумента функции несколько флагов, то данный способ можно использовать. Множеств (UPD: не как классов в библиотеке .Net, а как встроенной в синтаксис языка конструкции) в C# нет. Но зато есть атрибут [FlagsAttribute] для перечислений (т.е. для enum'ов):
[Flags]<br>enum Magic<br>{<br>  None = 0,<br><br>  Fire = 1, //огонь<br>  Air  = 2, //воздух<br>  Water = 4, //вода<br>  Earth = 8, //земля<br><br>  All  = Fire | Air | Water | Earth<br>}<br><br>* This source code was highlighted with Source Code Highlighter.
Читать дальше →

Асинхронное программирование — редактор графов

Reading time15 min
Views3.6K
Иногда в процессе описания бизнес-логики, необходимо составить граф асинхронных операций с внутренними зависимостями, т.е. когда задачи выполняются асинхронно, но некоторые задачи зависят от других и тем самым вынуждены «ждать» пока из можно будет запустить. В этом посте я хочу показать как эту проблему можно решить путем создания графической DSL, которая позволит разработчику визуально определить граф зависимостей.

Если интересно...

Lazy<T>: конструирование объектов по требованию в .NET 4.0

Reading time2 min
Views16K
Мне нравится, когда я нахожу новые части функциональности в .NET framework. Это все те большие интересности, которые получают всю любовь и признание на конференциях и в журналах.

Lazy<T> как раз один из таких.
Читать дальше →

Каррирование и частичное применение функции

Reading time3 min
Views28K
Когда я впервые услышал термин Каррирование, я сразу же представил себе вкусные тайскую и индийскую кухни.  К моему удивлению, я обнаружил, что разговор шел не о прекрасных специях, а о преобразовании функции, принимающей n аргументов в функцию, которая принимает один аргумент и возвращает каррированую функцию, которая принимает n — 1 аргументов. Где бы это могло быть полезным?
Читать дальше →

Избирательное юнит-тестирование или ещё раз о тонких контроллерах

Reading time6 min
Views3.4K
В дополнение к недавно упомянутой на Хабре статье о том, что полное 100%-е покрытие кода юнит-тестами почти всегда не является экономически выгодным, поскольку просто лень писать всю эту.… это требует неоправданных затрат рабочего времени и увеличивает расходы на поддержку кода, сегодня хотелось бы представить на суд общественности размышления по этому поводу Стива Сандерсона (Steve Sanderson), автора книг Pro ASP.NET MVC и Pro ASP.NET MVC V2.
Читать дальше →

С#: Этюды, часть 1

Reading time2 min
Views1.2K
На канале c# в irc-сети Руснет пытаюсь развлекать людей т.н. этюдами. Это — короткие задачки, для решения которых требуется знать некоторые тонкости языка и реализации, и которые совсем не очевидны для человека, с упомянутыми тонкостями не знакомого.
Этюд номер 1 каналом уже разгадан, но хабросообщество его пока, скорее всего, не знает.
Читать дальше →

C#: Этюды, часть 2

Reading time2 min
Views1.5K
Продолжение, начало здесь

Начну с соцопроса: какие Вы знаете способы выполнить код до начала функции Main() (надеюсь, что перечислят все известные мне и парочку неизвестных :) )?

А теперь задачка:

Перед Вами небольшой код, выводящий два символа (кстати, проверьте себя: в каком порядке они выведутся?). Необходимо вывести подчеркивание "_" между этими символами.
Конечно, задача была бы тривиальной без ограничений. А они следующие:

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

C#: Этюды, часть 3

Reading time2 min
Views1.5K
В предыдущей части было предложено три разных по своей сути решения.

Сегодня — новая загадка, из области ASP.NET. Её основное отличие от предыдущих в том, что я столкнулся с ней в реальной ситуации, и пришлось потратить время, чтобы разобраться, в чем же дело.

Итак, на странице Test.aspx имеется код:


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

Information

Rating
5,211-th
Date of birth
Registered
Activity