Рейтинг
+9.12
голосов:
8
avatar

C#  

XNADev топик-ссылка

Отличный сайт по XNA

LinFu AOP и LinFu IOC вводный экскурс часть первая

Зачастую при работе с БД(да и не только), особенно при использовании какого-нибудь ОРМ, возникает задача упрощения тех или иных процедур, которые приходится вызывать очень часто(к примеру открытие транзакции и её коммит, запросы с NOLOCK или банальный препроцессинг данных). Конечно все можно сделать по-старинке:

void Method(sometype somevalue)
{
   Preprocess(somevalue);
   OpenTransaction();
   // some stuff
   CommitTransaction();
}

Но «Шурик, это же не наш метод!»®. Потому мы пойдем дальше и воспользуемся более гуманными средствами а именно AOP и IOC (что это такое и с чем его едят вы можете почитать в интернете, потому не вижу смысла описывать это здесь)


( Читать дальше )
  • +2
  • 26 апреля 2011, 11:50
  • Hill
  • 1+1

unsafe cast'инг в .Net

Всем доброго времени суток!

Решил я тут на днях позаниматься немного программизмом, причем не для работы, а так, для себя, точнее для своего телефона ;). Стояла такая задача — загрузить из бинарного файла массив float'ов, причем сделать это максимально эффективно в плане быстродействия (под телефон же все-таки).

Оказалось, что в дотнете сделать это не так-то просто. Есть 2 пути — первое — это использовать BinaryReader и в цикле считывать из файла числа, и второй — прочитать весь файл в массив байт (byte[]) и потом из него копировать во float[]. И оба этих варианта меня понятное дело не устроили — первый потому что это медленно (насколько именно я не замерял конечно, но даже на вызовы функций уйдет время довольно приличное, если большое количество чисел надо прочитать), а второй — потому что это займет двойной объем памяти — сначала под массив байт, потом под массив float'ов.

Идеальным вариантом было бы конечно прочитать сразу все данные файла в массив байт и потом просто привести его к float[], тогда и прочитаем быстро и памяти лишней не сожрем. Но в дотнете этого сделать нельзя!



var file = new FileStream("myfile.bin", FileMode.Open);
byte[] data = new byte[40000];
file.Read(data, 0, 40000);
float[] numbers = (float[])data; // Вот так было бы очень здорово конечно, но к сожалению нельзя... :(




( Читать дальше )

NHibernate и WCF. Часть 2. Динамически подставляем известные типы



В первой (вводной) статье netcoder.ru/blog/csharp/224.html мы обозначили проблему и обсудили что не так она страшна, как кажется



( Читать дальше )

Реализация кэширования средствами Unity

При разработке любого высоконагруженного приложения рано или поздно встаёт вопрос кэширования данных. Ведь практически всегда есть часть информации которая изменяется достаточно редко и используется в качестве справочной. Постоянно запрашивать такую информацию из БД достаточно накладно, да и по большому счёту бессмысленно.
Наступил момент, когда и я при разработке такого высоконагруженного приложения столкнулся с этой проблемой. И решил её достаточно просто и безболезненно с помощью Unity Application Block.


( Читать дальше )

Русская Visual Studio 2010

Встречайте! Русская версия

Visual Studio 2010 уже здесь.
21 мая корпорация Microsoft объявила о доступности русской версии Visual Studio 2010. Русская версия была аннонсирована 12 апреля 2010 года на запуске Visual Studio 2010. Это первый релиз, который состоялся одновременно с выходом других локализаций.


( Читать дальше )

WCF+NHibernate+LINQ = ???



Интересная на мой взгляд задача…
Допустим у нас есть клиенты и сервер, общающиеся по WCF. Мы не хотим на клиентах деплоить сборки NHibernate и всего что с ним связано (в случае например, если клиенты написаны на Silverlight — это очень актуально), однако хотим воспользоваться некоторыми видами запросов с клиентской стороны (типа Criteria в Nhibernate).
Как к этому подступиться?


( Читать дальше )

Если ваша программа долго стартует..

… то на это могут быть несколько причин
1. При старте она пытается загрузить весь интернет
2. Кто-то забыл убрать Thread.Sleep
3. Какие-то ещё непонятные действия происходят


( Читать дальше )

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

Хочу рассказать о том, как сократить
try
{
  SomeObject.DoSomething();
}
catch (Exception ex)
{
  SomeExceptionHandlingFunction(ex);
}
до
ExecuteWithTryCatch(() => SomeObject.DoSomething());



( Читать дальше )

GarbageCollector: Разрушение мифов

Ни для кого, я думаю не секрет, что в народе часто бытует мнение о том, что языки и платформы с управляемой памятью дескать работают с ентой самой памятью медленнее, чем те, которые оставляют эту задачу кривым ручкам программиста ;). Я довольно долго тоже придерживался этого мнения, но вот как-то раз наткнулся в интернетах на статью Неизвестного Автора (http://www.ibm.com/developerworks/java/library/j-jtp09275.html?ca=dgr-lnxw01JavaUrbanLegends). Там рассказано о том, что в наше время использование GC — это скорее даже не удар по производительности, а как раз наоборот. Сразу стало интересно проверить это на практике. Для эксперимента я выбрал языки, которые я немного знаю и которые есть под рукой — C# и C++.


( Читать дальше )