Search
Write a publication
Pull to refresh
0
0
Иван Кошелев @Koshelew

User

Send message

Использование IoC контейнеров. За и Против

Reading time4 min
Views21K
В свете выхода новой версии Enterprise Library, одной из важнейших частей которой является IoC-контейнер Unity, лично я ожидаю всплеск интереса к теме IoC(Inversion of Control) контейнеров, которые, по сути, являются реализацией достаточно известного паттерна Service Locator.

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

Сравнение производительности IoC-контейнеров под Windows Phone

Reading time3 min
Views3.6K
Доброго времени, уважаемые хабражители!

Для смартфона оптимальность архитектуры приложений особенно важна, поэтому я решил провести сравнение по производительности бесплатных и открытых библиотек контейнеров, доступных для Windows Phone.
Удостоились внимания следующие библиотеки (самые последние версии на момент тестирования):
Читать дальше →

Сравнение объектов в C#.NET

Reading time6 min
Views141K
C#.NET предлагает множество способов сравнить объекты, как экземпляры классов, так и структур. Способов так много, что без упорядочения этих способов и понимания их грамотного использования и имплементации (при наличии возможности переопределения), в голове, неминуемо, образуется каша.
Читать дальше →

Зачем Google использует домен Duck.com?

Reading time2 min
Views5.6K
На сайте Hacker News развернулась интересная дискуссия о том, с какой целью Google поставил редирект на сайте Duck.com. Недоброжелатели предполагают, что это некий вариант тайпосквоттинга против «конкурента» DuckDuckGo.com.

DuckDuckGo.com — гибридный поисковик, который работает с 2008 года, без поискового спама, почти без рекламы, без слежки за пользователями (полностью анонимный), поддерживает горячие клавиши и другие классные штуки. В общем, эдакая гиковская «оппозиция» Google, созданная для крошечной группы протестного электората. Аудитория сайта в прошлом году составляла около 200 тыс. в день, вообще говоря, про него почти никто не знает.
Читать дальше →

Паттерны ООП в метафорах

Reading time17 min
Views575K
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Читать дальше →

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

Reading time13 min
Views78K

Введение


Обычно, при оптимизации программы для многоядерных компьютеров первым шагом является выяснение возможности разделения алгоритма на части, выполняющиеся параллельно. Если для решения задачи необходимо параллельно обрабатывать отдельные элементы из большого набора данных, то первыми кандидатами станут новые возможности параллельности в .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 и наоборот.

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


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

Наперегонки с машиной: вызовы и перспективы экономики будущего

Reading time13 min
Views6.5K

Одна из проблем пост-кризисной Америки — высокий уровень безработицы. Значительная часть из 12 миллионов американцев, потерявших работу в ходе глобального экономического кризиса 2007-2009 годов так и не смогли найти новое рабочее место, несмотря на восстановление экономики и рекордные показатели крупных американских корпораций. Ведущие экономисты не могут назвать точных причин сложившейся ситуации. Кто-то говорит о цикличности в экономике и недостаточности роста. Другие заявляют о стагнации и снижении американского динамизма — способности и склонности к инновациям. Третьи считают что наступил “Конец работы” — новые технологии заменят труд рабочих.
Исследователи из MIT Эрик Бриньолфссон (Erik Brynjolofsson) и Эндрю Макафи (Andrew McAfee) видят причину в том, что многие работники проигрывают в гонке против ускоряющегося прогресса информационных технологий. Но, полагают, что развитие технологий открывает и множество новых возможностей, когда человек и машина дополнят сильные стороны друг друга.

Пересказ-перевод-рецензия книги “Race against the machine” by Erik Brynjolofsson and Andrew McAfee.
Читать дальше →

Программная идиома, о которой вы никогда не слышали

Reading time2 min
Views1.2K
Вот некоторые последовательности событий:

Достать грабли из сарая, сгрести листья во дворе, затем поставить грабли обратно в сарай.

Полететь в Сиэтл, посмотреть достопримечательности, затем полететь домой.

Вставить ключ в дверь, открыть её, затем достать ключ из двери.

Включить экран телефона, посмотреть время, затем отключить его.


Видите шаблон? Вы делаете что-то, потом делаете что-то другое, а потом аннулируете первое действие. Или, более точно, последний шаг является обратным первому. Если вы знаете об этом шаблоне, то увидите его повсюду. Взять кружку, отхлебнуть кофе, поставить кружку. То же самое повсеместно встречается и в коде.

Открыть файл, прочитать содержимое, закрыть файл.

Выделить блок памяти, использовать его для чего-то, освободить память.

Загрузить содержимое ячейки памяти в регистр, изменить его, отправить обратно в память.

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

Сказка о разработке интерактивных книг

Reading time5 min
Views18K


В этой статье мы хотим поделиться нашим впечатлением и опытом о разработке двух интерактивных книг для детей: «История о Мисс Моппет» и «Сказка о Котёнке Томе».

Начнём с того, что отметим: самое важное в книге – это текст. Именно поэтому для книг очень важным является перевод, а применительно к приложениям на App Store: для книг-приложений, очень важна качественная локализация.

Читая книгу-приложение, дети и родители больше всего внимания обращают на интерактивность, на анимацию, на красочность и яркость картинок, и в последнюю очередь на буквы. Однако в отличие от англоязычных детей, для которых стараются разработчики всего мира, русские дети не так избалованы наличием на App Store интерактивных книг на русском языке с озвучкой, то есть книг для самых маленьких, где подсвечивается читаемый текст, и можно послушать каждое слово по отдельности, или даже отдельную букву в слове! Такие книги помогают изучать языки.

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

Как создавать «зеленый» код

Reading time6 min
Views5.4K
Что такое энерго-эффективность в применении к мобильным платформам? Простыми словами это возможность сделать больше, затратив при этом меньше энергии.

Каждому пользователю хотелось бы как можно реже заряжать свое мобильное устройство, будь то смартфон, нетбук, ультрабук. Возможно, когда-нибудь наступит момент, когда устройство нужно будет зарядить всего один раз, после его покупки и пользоваться до тех пор пока оно не надоест или морально не устареет.
Читать дальше →

Регистрация глобальных «хоткеев» при использовании WPF

Reading time4 min
Views6.5K
Возможно, вы когда-то очень хотели чтобы в вашем приложении присутствовала возможность управления чем-либо через глобальные клавиши. И, возможно, вам нравится программировать с использованием технологии WPF. Тогда этот топик для вас.

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

Обратная совместимость в iOS SDK

Reading time5 min
Views5.4K

Apple никогда официально не заявляла о несовместимостях между разными версиями своих OS. И всё же каждый крупный релиз они что-то меняют в ядре операционки — фиксят баги и привносят новые. И иногда именно фикс багов, с которыми все привыкли жить, добавляет новых трудностей – в iOS 3 ты не задумываясь добавлял 20 пикселей там, где iOS 4 добавляет их сама, и в итоге твоя модальная вьюшка уезжает на 20 лишних пикселей вверх.

Но это не самая страшная разновидность несовместимостей – их можно продебажить, пофиксить и выпустить новый билд. Также легко устраняется, например, ставшее уже традиционным изменение стандартного контрола для проигрывания видео – в каждой новой iOS Apple что-то добавляет, модифицирует, причём полностью забивая на старый интерфейс без всяких там deprecated за пару версий до выпиливания – так, например, в iOS 3 он был обычной вьюшкой от UIView, а в iOS 4 стал резко вью-контроллером, а старая MPMoviePlayerView исчезла.

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

Но относительно новая iOS 5 принесла ещё больше неожиданностей. Об этом свидетельствует хотя бы тот факт, что в последних релизах популярных айфон-приложений обязательно присутствует строчка “Fixed iOS 5 issues” – средний пользователь айпада находит примерно по 10 апдейтов приложений каждый день. Ниже я расскажу о неочевидной проблеме обратной совместимости iOS 4 и iOS 5, с которой мне пришлось столкнуться на своей шкуре и сполна хлебнуть горя.
Читать дальше →

По следам разрушителей мифов или Почему Android тормозит, а %мобильная ОС% нет?

Reading time10 min
Views175K


Добрый день, Хабр!

Мой предыдущий перевод статьи про аппаратное ускорение в Android вызвал бурное обсуждение в комментариях, основным мотивом которого был вопрос «так почему же тормозит Android?». Аналогичная ситуация наблюдается по всему интернету, и потому я привожу ниже еще один очень интересный и свежий перевод (снова из Google+), где автор Andrew Munn (о нем ниже) анализирует настоящие причины тормозов Android. С удовольствием прочитал этот пост сам и горд возможностью первым поделится им с хабрасообществом.

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

Impressive Solids: делаем игру на C# под OpenGL, часть I

Reading time12 min
Views32K

Once Upon a Time in America


Когда-то, году в 2002-м, на мой компьютер попала интересная игрушка, так сказать, класса тетриса (подробное описание геймплея приведено ниже); она очень полюбилась моей маме, которая играла в эту игру часами. Однако был досадный недостаток: после, кажется, 10 запусков игра начинала требовать регистрацию, которая, что удивительно, была бесплатной, но через интернет, что, само собой, являлось непреодолимым препятствием, поскольку интернета-то никакого тогда в наших краях в глаза не видывали, хоть и слыхали, что есть такая штука. Приходилось постоянно переустанавливать.



Через года три, когда интернет уже провели, а игра успела стать shareware и начать просить за регистрацию сколько-то денег, я попробовал её зарегистрировать, однако сайт производителя был к тому времени скорее мёртв, чем жив, и, по-видимому, остаётся таким и по сей день. В интернете легко находится shareware-версия игры, множество, не побоюсь этого слова, кейгенов, являющихся на самом деле троянами, и ни одной возможности зарегистрировать игру, чтобы мама могла в неё играть уже совсем на другом компьютере. В какой-то момент я подумал: а почему бы просто самому не сделать аналогичную игру и решить тем самым проблему на корню? Заодно из этого может получится какой-никакой hello-world по разработке простой игры для ПК в современных условиях — который я и предлагаю вниманию читателей.


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

Контроль бизнеса и финансовые отчеты

Reading time5 min
Views2.1K
«Первое правило бизнеса – защищай свои инвестиции»
этикет банкира 1775 г.

Если в те времена инвестиции защищались с оружием в руках, то в современном мире таким оружием становятся информационные технологии.

Десять лет назад у меня было несколько бизнес-единиц. Я представлял себя в будущем, сидящим перед десятком мониторов, на которых отражается информация о состоянии десятков, сотен бизнесов, принадлежащих мне. Тогда я искренне верил, что это возможно (нажал одну кнопку и все понятно). Но чем больше становилось у меня бизнесов, тем меньше я их контролировал. И тем больше терял.
Основной причиной всех потерь был плохой контроль бизнеса. Тогда встал вопрос:

Как можно контролировать бизнес настолько хорошо, чтобы обезопасить себя от потерь?

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

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

Пишем гаджет Windows Sidebar с нуля

Reading time7 min
Views62K
Недавно мне понадобилось создать гаджет для Windows Sidebar. Навыков в этом у меня не было, поэтому, немного погуглив и почитав документацию, приступаем.

Сразу покажу то, что получилось в итоге


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

Как я заработал $200K на рынке образовательных приложений iOS

Reading time12 min
Views23K
Данную статью хочу приурочить к одновременно выходу второй версии моего приложения Word Wizard и взятию новой отметки в $200 000 в Apple AppStore. Далее я постараюсь поделиться своим опытом и мыслями об образовательном рынке, а также рассказать свою историю успеха. Надеюсь что эта информация будет полезна многим независимым разработчикам. Для тех же кто создает образовательные продукты на платформе iOS моя статья даст возможность оценить рынок приложений в этой сфере.



Собственно начну с продаж и рейтинга, а затем расскажу подробнее про мой личный опыт.
Итак, поехали ...

Линейная алгебра для разработчиков игр

Reading time19 min
Views796K
Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
Читать дальше →

Вызов unmanaged code из managed без P/Invoke

Reading time3 min
Views3.8K
Продолжаем маршалировать. На этот раз будет рассмотрен способ вызова С-шных функций из C# без использования P/Invoke( [DllImport] ). А если быть до конца точным, то [DllImport] использовать все же придется, но только один раз. По существу, данная статья является статьей о маршалинге делегатов в указатели на функции и обратно.
Итак, приступим.
Читать дальше →

Вызов managed кода из unmanaged

Reading time4 min
Views7.1K
В данной статье будет рассматриваться вызов управляемого C# — кода(.Net) из неуправляемого С — кода.
Как-то раз на работе дали проект, точнее даже не сам проект, а только его часть. Сам же проект состоял из двух частей: функционал, написанный на С (unmanaged code) и интерфейсная часть, написанная на C# (managed code). Моей задачей было написать интерфейс и связать его с функционалом.
Читать дальше →

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity