Как стать автором
Обновить
24
0

Пользователь

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

Структуры и конструкторы по умолчанию

Время на прочтение7 мин
Количество просмотров88K
Конструктор по умолчанию — это довольно простая конструкция, которая сводится к созданию для типа конструктора без параметров. Так, например, если при объявлении нестатического класса не объявить пользовательский конструктор (не важно, с параметрами или без них), то компилятор самостоятельно сгенерирует конструктор без параметров. Однако когда речь заходит о конструкторах по умолчанию для структур (для значимых типов), то тут все становится не столь просто.

Вот простой пример, как вы ответите на следующий вопрос: сколько значимых типов из .NET Framework содержит конструкторы по умолчанию? Интуитивным ответом кажется "все", и будете не правы, поскольку на самом деле, ни один из значимых типов .NET Framework не содержит конструктора по умолчанию.

Читать дальше →
Всего голосов 34: ↑30 и ↓4+26
Комментарии11

Когда использовать Parallel.ForEach, а когда PLINQ

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

Введение


Обычно, при оптимизации программы для многоядерных компьютеров первым шагом является выяснение возможности разделения алгоритма на части, выполняющиеся параллельно. Если для решения задачи необходимо параллельно обрабатывать отдельные элементы из большого набора данных, то первыми кандидатами станут новые возможности параллельности в .NET Framework 4: Parallel.ForEach и Parallel LINQ (PLINQ)

Parallel.ForEach


Класс Parallel содержит метод ForEach, представляющий собой многопоточную версию обычного цикла foreach в C#. Подобно обычному foreach, Parallel.ForEach выполняет итерации над перечислимыми данными (enumerable), но с использованием множества потоков. Одна из более часто используемых перегрузок Parallel.ForEach выглядит следующим образом:

public static ParallelLoopResult ForEach<TSource>(
			 IEnumerable<TSource> source,
			 Action<TSource> body)

Ienumerable указывает на последовательность, по которой нужно выполнить итерации, а Action body задает делегат, вызываемый для каждого элемента. Полный список перегрузок Parallel.ForEach можно найти здесь.

PLINQ


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

Выполнение независимых операций


Читать дальше →
Всего голосов 79: ↑73 и ↓6+67
Комментарии9

Публикация приложений в Windows Store. Часть первая – Регистрация в Магазине Windows

Время на прочтение7 мин
Количество просмотров30K
Магазин приложений Windows Store (Магазин Windows) открыл свои двери для всех разработчиков, желающих показать свои приложения растущей аудитории с крупнейшим в истории потенциалом. За время доступности Windows 8 Developer Preview, Consumer Preview и Release Preview эти дистрибутивы были загружены только с сайта Microsoft более 16 миллионов раз, из них более 7 миллионов – Release Preview. В то время, как некоторые гордятся, что свежая версия их ОС была установлена на 7 миллионов компьютеров, мы видим, что только предварительный релиз Windows 8 в условиях отсутствия на рынке новых устройств для нее уже установили 7 миллионов человек. Впрочем, эта статья предназначена прежде всего для тех, кого не нужно убеждать в огромных возможностях Windows 8 для разработчиков. Если вы уже начали разрабатывать приложение для Windows 8 с целью опубликовать его в Магазине Windows или, тем паче, уже разработали такое приложение, эта статья для вас.

Итак, каковы же основные правила и особенности регистрации в Магазине Windows и последующей публикации приложений.
Читать дальше →
Всего голосов 43: ↑34 и ↓9+25
Комментарии8

Kinect for Windows SDK. Часть 1. Сенсор

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

Три части обзорной статьи можно считать вводными к двум другим: «Играем в кубики с Kinect» и «Программа, апорт!». Хотя хронологически они идут последними. Более того, за время их написания Microsoft успел выпустить новую версию SDK – 1.5. Какой удар со стороны корпорации!

Как вам должно быть известно, Kinect – это бесконтактный контроллер, т.е. скажем в играх, вместо того, чтобы яростно стучать по клавиатуре или терзать gamepad, вы размахиваете руками и ногами и время от времени голосом даете какие-то команды. Самое время спрятать дорогие китайские вазы X века подальше!
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии18

SQLite и UNICODE

Время на прочтение10 мин
Количество просмотров59K
Первая часть — вводная.
Вторая часть — быстрый старт.
Третья часть — особенности.

Несмотря на то, что эта тема затрагивалась на Хабре и раньше, некоторые ключевые вещи не прозвучали. В этой статье делается попытка «закрыть тему». Замечания по дополнению/исправлению приветствуются.

Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии17

SQLite — замечательная встраиваемая БД (часть 3)

Время на прочтение9 мин
Количество просмотров201K
Первая часть — вводная.
Вторая часть — быстрый старт.

Третья часть — тонкости и особенности.

Читать дальше →
Всего голосов 90: ↑85 и ↓5+80
Комментарии33

SQLite — замечательная встраиваемая БД (часть 1)

Время на прочтение5 мин
Количество просмотров479K
Решил все-таки написать статью про SQLite, в которой хочу обобщить свой 3-х летний опыт использования этой БД под Windows. Вижу, что тема популярная, но информации мало.

Часть 2
Часть 3

Небольшая вводная.

Эта статья не для начинающих программистов.
Она не является учебником по SQL.
Она не агитирует использовать SQLite.
Она не агитирует не использовать SQLite.
Статья написана в виде вопросов от гипотетического новичка в SQLite и ответов на них (поскольку информации очень много и так хоть немного проще ее структурировать).

Читать дальше →
Всего голосов 102: ↑100 и ↓2+98
Комментарии54

Как я покупал квартиру

Время на прочтение11 мин
Количество просмотров62K
Я хотел написать статью про линейную регрессию, но потом подумал, да ну её, лучше куплю квартиру. И пошёл искать, что предлагают. А предлагают, как оказалось, много чего. В подходящий мне ценовой диапозон попало больше 500 квартир. И что, мне теперь все это просматривать? Ну нееет, программист я в конце концов или не программист. Надо это дело как-то автоматизировать.
Читать дальше →
Всего голосов 279: ↑272 и ↓7+265
Комментарии182

Восстановление расфокусированных и смазанных изображений. Практика

Время на прочтение10 мин
Количество просмотров351K
Не так давно я опубликовал на хабре первую часть статьи по восстановлению расфокусированных и смазанных изображений, где описывалась теоретическая часть. Эта тема, судя по комментариям, вызвала немало интереса и я решил продолжить это направление и показать вам какие же проблемы появляются при практической реализации казалось бы простых формул.

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

Ниже показан результат обработки реального размытого изображения (не с синтетическим размытием). Исходное изображение было получено камерой Canon 500D с объективом EF 85mm/1.8. Фокусировка была выставлена вручную, чтобы получить размытие. Как видно, текст совершенно не читается, лишь угадывается диалоговое окно Windows 7.



И вот результат обработки:



Практически весь текст читается достаточно хорошо, хотя и появились некоторые характерные искажения.

Под катом подробное описание проблем деконволюции, способов их решения, а также множество примеров и сравнений. Осторожно, много картинок!
Читать дальше →
Всего голосов 459: ↑456 и ↓3+453
Комментарии141

7 типичных русских проблем в английской речи

Время на прочтение10 мин
Количество просмотров254K
South Park
Предметом данной статьи является попытка систематизировать культурные различия, и типичные ошибки которые мы допускаем с нашими иностранными коллегами. Большинство примеров взято из книги Русские проблемы в английской речи. Я взял на себя смелость в небольшой популяризации данной темы, снабжению комментариями и собственными примерами.

1. Я прав, а ты нет
Читать дальше →
Всего голосов 170: ↑160 и ↓10+150
Комментарии171

Введение в Claims-based identity

Время на прочтение5 мин
Количество просмотров32K
При разработке приложений на стеке Microsoft для получения информации о текущем пользователе достаточно часто(точнее почти всегда) можно встретить такие участки кода или обертки над ними:

HttpContext.User.Identity.Name
HttpContext.User.IsInRole(...)


или

Thread.CurrentPrincipal.Identity.Name
Thread.CurrentPrincipal.IsInRole(...)


Целью этих вызовов может являться необходимость принятия решения об авторизации вызова какой-то функции или метода, отображение информации о текущем пользователе и тд.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии55

Облегченная разработка WP7 приложений при помощи Caliburn.Micro framework (ч.1)

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


Здравствуйте!

Как можно догадаться из названия, эта статья будет просвещенна framework'у Caliburn.Micro. Я постараюсь показать, что полезного может дать использование этого framework’а разработчику под платформу WP7, какие задачи он решает, его достоинства и недостатки.

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

Если вам интересна эта тема, то добро пожаловать под кат.
Читать дальше →
Всего голосов 24: ↑17 и ↓7+10
Комментарии15

Russian Code Cup 2012: подробный разбор задач с первой квалификации

Время на прочтение12 мин
Количество просмотров29K
27 мая завершился первый этап олимпиады Mail.Ru Group по программированию Russian Code Cup 2012. Всего в RCC’12 приняло участие более тысячи человек, из которых 200 лучших вышло в полуфинал соревнования, в отборочный раунд. Победителем первого квалификационного раунда стал студент мехмата ННГУ Владислав Епифанов из Нижнего Новгорода. Участниками было направлено 3391 решение, из которых 1066 были приняты системой как верные. 634 человека или 63% от общего числа участников, решили хотя бы одну задачу.

Russian Code Cup — индивидуальное соревнование по спортивному программированию, ежегодно проводимое Mail.Ru Group. Оно традиционно состоит из трех этапов: в начале лета проходят три квалификационных раунда, затем лучшие принимают участие в отборочном туре, первые пятьдесят победителей отборочного тура соревнуются в финале. Личного присутствия потребует только последний из них, остальные же проводятся онлайн. Все финалисты будут отмечены ценными подарками, а приз участнику, занявшему первое место, составит 10 000 долларов. За второе и третье место полагаются 5 000 и 3 000 долларов.

В статье я расскажу о задачах, которые предлагались участникам и о способах их решения. Краткий разбор задач опубликован на сайте сразу после завершения RCC, тут же я постараюсь разъяснить подробности настолько, чтобы решение было понятно даже начинающим программистам.
Читать дальше →
Всего голосов 65: ↑60 и ↓5+55
Комментарии14

Цитаты о языках программирования

Время на прочтение3 мин
Количество просмотров41K
Что учёные, писатели и программисты думают о популярных языках программирования.

Все языки


«Есть два подхода к программированию. Первый — сделать программу настолько простой, чтобы в ней очевидно не было ошибок. А второй — сделать её настолько сложной, чтобы в ней не было очевидных ошибок.»
Tony Hoare. Профессор, занимался реализацией Алгол 60, сейчас исследователь в Microsoft Research.


Algol 60 (позже повлиявший на C)


«Я не мог устоять перед искушением добавить в язык нулевой указатель (null), просто потому, что его так легко было реализовать. Это привело к бессчётному множеству ошибок, уязвимостей и сбоев, которые нанесли ущерб, наверное, в миллиард долларов за последние сорок лет.»
Tony Hoare.
Читать дальше →
Всего голосов 256: ↑235 и ↓21+214
Комментарии103

Погружаемся в глубины C# dynamic

Время на прочтение5 мин
Количество просмотров76K
Одним из наиболее заметных дополнений в C# 4 является dynamic. Об этом рассказано много и не раз. Но всегда выпускается из виду DLR (Dynamic Language Runtime). В данной статье мы рассмотрим внутреннее устройство DLR, работу самого компилятора, а также дадим определение понятиям статически-, динамически- типизированный язык со слабой и сильной типизациями. И, конечно же, не останется без внимания техника PIC (Polymorphic Inline Cache), используемая, например, в Google V8 engine.
Читать дальше →
Всего голосов 59: ↑56 и ↓3+53
Комментарии26

Нейронные сети для чайников. Сеть Кохонена

Время на прочтение3 мин
Количество просмотров347K
В статье Нейросети для чайников. Начало автор Paul_Smith доступно показал насколько просто создать нейронную сеть для распознования картинок. Но есть одно но — то что он описал нейронной сетью не является. Перед его следующей статьей хочу рассказать вам как решить ту же задачу, но с использованием нейронной сети Кохонена.

Итак, распознавать мы будем цифры, написанные белым по черному, такие как эти:
image image image image image image
Читать дальше →
Всего голосов 107: ↑101 и ↓6+95
Комментарии61

Как правильно сортировать контент на основе оценок пользователей

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


В оригинале название звучит как «How Not To Sort By Average Rating». Я подумал, что дословный перевод «Как не сортировать по усреднённому рейтингу» будет малопонятен и хуже отражает содержание статьи.

Постановка проблемы


Вы занимаетесь веб программированием. У вас есть пользователи, которые оценивают контент на вашем сайте. Вы хотите разместить высоко оцененный контент наверху, а низко оцененный — внизу. Для этого на основе пользовательских оценок вам нужно вычислить некий «рейтинг».

Неправильное решение №1

Рейтинг= (Число положительных оценок) - (Число отрицательных оценок)

Читать дальше →
Всего голосов 458: ↑423 и ↓35+388
Комментарии134

Работа с Command Line в .Net

Время на прочтение4 мин
Количество просмотров16K
Добрый день сообщество,

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

Мне кажется, что этой, на первый взгляд, банальной теме уделяется мало внимания. В этой статье я хотел бы поделится опытом работы с Command Line в .Net.
Читать дальше →
Всего голосов 51: ↑40 и ↓11+29
Комментарии32

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

Время на прочтение1 мин
Количество просмотров4.8K
Наглядный пример аутентификации по ключу. Похожим образом сейчас может работать много протоколов включая ssh.

Всего голосов 59: ↑50 и ↓9+41
Комментарии25

eBay API: Первые шаги

Время на прочтение5 мин
Количество просмотров31K
Как известно начать изучать что либо труднее всего, eBay API даже при том что у него нормальная документация не исключение. Я сам только недавно начал его изучать и пришлось плотно полазить по доке и сторонним ресурсам прежде чем в голове начала складываться нужная картина.
Этот пост предназначен для тех, кому нужно быстро начать работать с eBay API ну и для меня самого, что бы в будущем ничего не забыть.

Читать дальше →
Всего голосов 33: ↑30 и ↓3+27
Комментарии17

Информация

В рейтинге
4 077-й
Зарегистрирован
Активность