Программирование → Скорость захвата/освобождения памяти в C#
У меня возникла такая задача: нужно обработать файл с данными. Файл разбит на секции длиной около 1 МБ, каждая из них содержит в упакованном виде примерно 100000 записей.Число записей может меняться от секции к секции и записано в заголовке каждой из них. В процессе обработки секция распаковывается, и каждая запись превращается в 20 целых чисел. Для обработки нужно хранить текущую распакованную секцию и несколько предыдущих (где-то 5-10, но может быть и больше – заранее неизвестно, сколько). Вопрос в том, как выделять память для распаковки секций.
Проект, в рамках которого надо решить задачу, пишется на C# под VS 2008 (использование вставок из других языков категорически не приветствуется), основная система, под которой будет работать готовая программа – Windows 7, 64 bit (по крайней мере, пока). И, как обычно, обрабатывать нужно побыстрее.
Первый вопрос, который возникает – надо ли организовывать пул массивов для распаковки, или можно захватывать массив для каждой новой секции заново. Второй вопрос – какой должна быть структура этого массива, что лучше – работать с линейными массивами в 8 МБ длиной, или разбить массив на куски поменьше и организовать, например, массив массивов. Во втором случае – какой должна быть длина этих кусков.
Проект, в рамках которого надо решить задачу, пишется на C# под VS 2008 (использование вставок из других языков категорически не приветствуется), основная система, под которой будет работать готовая программа – Windows 7, 64 bit (по крайней мере, пока). И, как обычно, обрабатывать нужно побыстрее.
Первый вопрос, который возникает – надо ли организовывать пул массивов для распаковки, или можно захватывать массив для каждой новой секции заново. Второй вопрос – какой должна быть структура этого массива, что лучше – работать с линейными массивами в 8 МБ длиной, или разбить массив на куски поменьше и организовать, например, массив массивов. Во втором случае – какой должна быть длина этих кусков.
.NET → Упрощаем жизнь: сервис автораспаковки архивов на C#
Это, конечно, не статья, а небольшая путевая заметка, но тем не менее. Так получилось, что 99% архивов попадают на мой компьютер, чтобы быть тут же распакованными, дабы добраться до их содержимого. И если в маке сафари сам это делает за меня, то в windows приходится каждый раз нажимать пункт в контекстном меню.В какой-то момент мне это безумно надоело и я написал простой сервис, который распаковывает все самостоятельно. Мне он показался удобным и я решил поделиться с народом.
.NET → Сложно о простом или особенности Linq to objects
LINQ to objects сейчас прочно вошел в нашу жизнь, победоносными шагами ступая по всему стеку .net приложений. В этой статье я бы хотел привести примеры нескольких не очевидных вещей, с которыми довелось столкнуться, работая с LINQ. Интересно — прошу под кат.
.NET → Создание динамического прокси-объекта с помощью dynamic типа из песочницы
Как и многие люди, перед которыми стоит задача написания очередного UI для своего приложения, я периодически сталкиваюсь с необходимостью создания для UI своей собственной модели, которая в какой-то мере повторяет модель предметной области, однако при этом расширяем и/или изменяет ее. И вот что из этого вышло.
Проектирование и рефакторинг → Юнит тесты в ASP.NET WebForms из песочницы
Про юнит тесты
Юнит тесты, как известно, это таблетка от головной боли разработчика ПО. Если использовать правильно и по инструкции, то здоровый цвет лица и блеск в глазах обеспечен и без стимулирующих средств. Про юнит тесты говорят по разному: с придыханием те кто прочитал о них в MSDN журнале, с восхищением те кто уже окунулся в мир прекрасного, и с сожалением те кто волею судеб вынужден работать в среде категорически неприемлющей эту ману небесную. Первым я могу лишь пожелать решительности, вторым апплодирую, а вот третим и адресована эта статья.
Кому это? О чем?
Данная статья посвящается таким же как и я, разработчикам корпоративных сайтов на C#/ASP.NET WebForms. Людям которые, как и я, доросли до осознания факта, что ASP.NET WebForms это классно, но не совсем. Не совсем, потому что вебформы не поддерживают юнит тесты, а следовательно и TDD. И единственный практический способ написания стойкого кода это вдумчивое чтение оного. Так я мучался последние несколько лет развивая существующие асп.нет проекты, пока наконец не прозрел. О прозрении и пойдет речь.
Персональные блоги → Лучшие посты Bart De Smet'а за 2009 год в PDF
Bart De Smet порой пишет очень интересные и мозголомные вещи. Вот только одна беда, на то чтобы осилить один пост, может уйти достаточно много времени.
Недавно «подарил» себе на день рождения Pocket Book 301 (коим полностью доволен), а потому решил скачать любимые посты на читалку. Чтобы уже потом, никуда не спеша, разбираться, лёжа на диване.
Для конвертации сохранял whole page, открывал в Word 2007, убирал мусор, и сохранял в PDF. Получились очень аккуратные PDF'ки. Решил поделиться с сообществом, вдруг кому пригодится.
http://tinyurl.com/yhmgh6s
В папке лежат следующие посты:
(Mis)using C# 4.0 Dynamic – Type-Free Lambda Calculus, Church Numerals, and more
LINQ to Ducks – Bringing Back The Duck-Typed foreach Statement To LINQ
Type-Free Lambda Calculus in C#, Pre-4.0 – Defining the Lambda Language Runtime (LLR)
Taming Your Sequence’s Side-Effects Through IEnumerable.Let
Statement Trees With Less Pain – Follow-Up on System.Linq.Expressions v4.0
Expression Trees, Take Two – Introducing System.Linq.Expressions v4.0
Недавно «подарил» себе на день рождения Pocket Book 301 (коим полностью доволен), а потому решил скачать любимые посты на читалку. Чтобы уже потом, никуда не спеша, разбираться, лёжа на диване.
Для конвертации сохранял whole page, открывал в Word 2007, убирал мусор, и сохранял в PDF. Получились очень аккуратные PDF'ки. Решил поделиться с сообществом, вдруг кому пригодится.
http://tinyurl.com/yhmgh6s
В папке лежат следующие посты:
(Mis)using C# 4.0 Dynamic – Type-Free Lambda Calculus, Church Numerals, and more
LINQ to Ducks – Bringing Back The Duck-Typed foreach Statement To LINQ
Type-Free Lambda Calculus in C#, Pre-4.0 – Defining the Lambda Language Runtime (LLR)
Taming Your Sequence’s Side-Effects Through IEnumerable.Let
Statement Trees With Less Pain – Follow-Up on System.Linq.Expressions v4.0
Expression Trees, Take Two – Introducing System.Linq.Expressions v4.0
.NET → C# & Oracle — заметки на полях — 1

Когда-то давно, очень давно...
Компания купила лицензию на БД Oracle. Затем в эту компанию трудоустроился я. Соответсвенно начав продвигать .Net «в массы». БД Oracle используются не во многих организациях, но используется.
Как же осуществить взаимодействие с БД Oracle, используя C#?
Open source → Почему Mono хорош
Мы с участниками социальной сети open-life.org решили сделать перевод статьи Джо Шилдза (Jo Shields) «Here we go again – why Mono doesn’t suck». В результате получилась статья «Почему Mono хорош». Копию данного перевода можно прочитать здесь: Почему Mono хорош — open-life.org
Прим.: Если кто захочет инвайт на open-life.org — стучитесь в личку
Я участник Debian Mono Group, Debian CLI Applications Team, и Debian CLI Libraries Team. И уже в течении года работаю над сопровождением пакетов проекта Mono и программ, которые используют его в ОС Ubuntu (и Debian). Мне хорошо известны горячие споры, угрозы и последующие переходы на личности, и сейчас я принимаю ваш «вызов». В этой статье я говорю от себя лично — не от проекта Debian, не от Ubuntu, не от Mono, и не потому, что меня попросил мой начальник.
Вам хотелось «объективного пояснения, чем хорош Mono, почему он не представляет угрозы и почему его следует включить в Ubuntu по умолчанию»? — Я отвечу на эти 3 вопроса по очереди, затем предложу общий вывод к этой статье, а так же к более широкому движению «Анти-Mono». Это сообщение подписано GPG (прим. переводчика: GPG=GNU Privacy Guard — свободная альтернатива набору криптографического ПО PGP) для подтверждения факта его публикации без изменений. Оригинальный текст доступен по адресу retro.apebox.org/herewegoagain.txt чтобы каждый желающий мог проверить его подлинность самостоятельно.