Pull to refresh
153
0
Stanislav Sidristij @sidristij

Семинары по платформе .NET CLRium

Send message

Генератор телеметрии станции Мир, или почему нельзя обижать программистов

Reading time1 min
Views16K
image
Посты — ссылки пропали, а запись достойна внимания. Приятного чтения:
Сегодня я хочу, чтобы мой технический читатель, измотанный повседневной работой, немного расслабился, для чего расскажу довольно старую, но, несмотря на это, до сих пор малоизвестную историю про одного обиженного руководством программиста, занимавшегося интересной и творческой задачей — поддержкой рандомного эмулятора российской космической станции «Мир», а также о внезапно возникшем в результате этого опыта телеметрическом канале с того света.

Скорее всего, байка. Однако правдой с легкостью могла бы быть

Ссылка на оригинал
Total votes 81: ↑54 and ↓27+27
Comments42

Оптимизация и Generics в CLR

Reading time7 min
Views6.7K
В этой статье Джон Скит будет описывать как простейшие конструкции языка замедляют вашу программу и как их можно ускорить.

Как и в любой работе, сваязанной с производительностью приложений, результат может варьироваться в зависимости от условий (в частности, например, 64-разрядный JIT может работать несколько иначе), и в большинстве случаев это не должно вас волновать. Несмотря на это, относительно небольшое количество разработчиков пишут продакшен-код, состоящий из большого количества микрооптимизаций. Потому, пожалуйста, не принимайте этот пост как призыв к усложнению кода ради иррациональной оптимизации, которая якобы ускорит вашу программу. Используйте это только там, где это реально может понадобиться.

Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments18

Проблема циклических зависимостей при инициализации типов

Reading time10 min
Views20K
Некоторые из читателей, которые когда-либо сталкивались с проблемой, описанной в названии статьи, наверняка оставались на работе до поздна и проводили много часов в отладчике. Для других это может быть не более чем игрой слов и жаргонными словечками. Однако, давайте отойдем от жаргона в сторону и раскроем понятия:
  • Инициализация типа: это код, который выполняется чтобы проинициализировать все статические переменные класса и выполнить статический конструктор;
  • Циклическая зависимость: два кусочка кода, которые зависят друг от друга. В нашем случае это два класса, инициализация типов которых требует уже проинициализированного типа другого класса.

Ну и небольшой пример, чтобы показать, о чем идет речь:
using System; 
	
class Test 
{     
    static void Main() 
    { 
        Console.WriteLine(First.Beta); 
    } 
} 
	
class First 
{ 
    public static readonly int Alpha = 5; 
    public static readonly int Beta = Second.Gamma; 
} 
	
class Second 
{ 
    public static readonly int Gamma = First.Alpha; 
}


Результатом выполнения этого кода будет 0
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments20

Набор полезных утилит и библиотек мира .NET

Reading time2 min
Views13K
Продолжаю серию постов о библиотеках и прогрмаммах этого мира. Крайне советую всем не знакомым посмотреть в сторону языка программирования Nemerle. У него есть все шансы стать таким же мейнстримом, как C#, F#, VB.NET. Тут все зависит от вас, как говорится. Вы задаете мейнстрим, а не корпорации. Итак, приступим.

SharpDevelop



Это прекрасная IDE для работы в проектах .NET. Скоро будет добавлена поддержка C\C++. Сейчас она есть, но частичная. IDE полностью бесплатна, поддерживает на данный момент C#/VB.NET/IronRuby/IronPython/F#/Nemerle(надо доустановить плагин)/ Boo. Среди типов проектов — абсолютно любые, включая ASP.NET, WPF, WCF с визуальными редакторами, подсказками. Есть встроенный рефакторинг, имеющий пока что малую часть функционала ReSharper. Вместе с плагином ThemeTool превращается в полноценную Visual Studio 2010 визуально (см. скриншот). Это то, что должен попробовать каждый разработчик .NET и иметь при себе. Ведь в отличии от Visual Studio инсталлятор этой программы занимает всего 20 мегабайт.
Читать дальше →
Total votes 68: ↑51 and ↓17+34
Comments45

Набор полезных утилит и библиотек мира .NET

Reading time2 min
Views4.8K
Довольно часто так бывает что кто-то когда-то сделал прекрасную вещь, а она либо никем так и не была найдена, либо быстро забыта. Потихоньку я буду стараться предоставлять в серии топиков информацию по различным проектам, на которые стоит обратить внимание. Многие из них специфичны. И тем еще более интересны.

IL Stub Diagnostic Tool



IL заглушки (stubs) динамически генерируются во время работы приложения на лету и управляют маршаллингом и вызовом целевого метода. IL Stub Diagnostic tool была создана чтобы улучшить качество отладки приложений. Это real-time монитор, который показывает детали каждой IL заглушки, создаваемой в исследуемом процессе. Для каждой заглушки утилита показывает ее IL код и сигнатуры Managed/Unmanaged методов
Читать дальше →
Total votes 58: ↑47 and ↓11+36
Comments15

Microsoft перевел в Open Source еще одну часть стека технологий ASP.NET

Reading time2 min
Views2.4K
Пару дней назад Microsoft анонсировал что еще один компонент .Net Framework будет доступен для скачивания в исходных текстах по лицензии Apache License 2.0. Таким образом, теперь весь ASP.NET стек распространяется в исходных текстах, включая Razor Engine, System.Json, Web API и Web Pages. Он доступен как для скачивания так и для просмотра истории изменения. С этим релизом вся группа проектов будет работать по правилам Open Source, делая возможным включения своего собственного функционала и исправления ошибок любым членом сообщества, при полной поддержке кода со стороны Microsoft.
Читать дальше →
Total votes 54: ↑46 and ↓8+38
Comments22

Менеджмент памяти в .Net Framework от Redgate

Reading time1 min
Views6K

Недавно с рассылкой от компании Redgate (это та компания, которая выпустила всем известные тулы .Net Reflector, SmartAssembly и прочие) получил бесплатную книгу «Under the Hood of .NET Memory Management». Пока что доступна только первая ее часть, но она довольно объемная и раскрывает многие аспекты менеджмента памяти. Самое вкусное обещают во второй части. Приятного скачивания (краткое содержание под катом):



Бонусом по первой ссылке, в том же архиве, идет книга по ANTS Memory Profiler

Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments10

Ликвидатор велосипедов: повторно используемый код

Reading time3 min
Views1.9K
Всем привет! Помните, когда-то давным давно была хорошая серия статей? Так вот я хочу ее продолжить. Однако на этот раз я не буду рассматривать огромное множество библиотек, которые решают повсеместно-возникающие проблемы, а рассмотрю всего лишь одну, но способную решить огромную кипу проблем. Мне кажется каждый из вас когда-то писал строчки вида:

void SomeMethod(IEmployee lazyguy)
{
    if(lazyguy == null) throw new ArgumentException(“lazyguy”);
    // Do something with lazy guy. Fire him, for example.
}


Кто-то пытался превратить это в:

void SomeMethod(IEmployee lazyguy)
{
    UniversalValidator.CheckNotNull(lazyguy);
    // Meet with him and talk about motivations
}


Кто-то превращал это во что-то похожее. Однако у всех, я могу поспорить, оставался осадок что что-то тут не так. Красивее было бы как-то по другому. А что в итоге? Огромное количество велосипедов с квадратными колесами! Как сделать по-другому?
Читать дальше →
Total votes 21: ↑13 and ↓8+5
Comments8

Вышла в свет новая версия PostSharp RC 1

Reading time2 min
Views1.1K
Итак, доступна для скачивания новая версия продукта – релиз кандидат PostSharp 2.1, с нашего веб-сайта и с репозитория NuGet.

PostSharp 2.1  — это незначительное обновление PostSharp 2.0. Причина выхода этой версии в основном – правка некоторых ошибок, которые мы допустили в разработке предыдущей версии.

Релиз-кандидат обещает быть высококачественным продуктом, который практически не содержит ошибок, которые нам известны и необходимо чтобы он был протестирован обществом прежде чем он будет помечен как стабильный и выпущен как релиз. Также была проделана работа над обновлением документации. Так что теперь она отражает весь функционал продукта.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments6

OpenSource или история одной любви

Reading time3 min
Views1.3K
Что может подвигнуть разработчика на написание программного обеспечения просто так, не за деньги, не получая изначально ни копейки а только тратя все свое и без того отсутствующее свободное время? Существует на самом деле множество причин и люди не раз пытались их анализировать. На многих сайтах существует огромное количество опросов, с множеством вариантов ответов, на которые люди отвечают примерно равномерно. Оно и понятно, мотивация у всех разная. Однако, моя задача сегодня не попытаться вывести “теорию опенсорса”. Моя задача сегодня – рассказать о небольшом проекте, который я делал совсем недавно. И который помог мне добиться хороших позиций в жизни, хоть о нем так никто и не узнал.
Читать дальше →
Total votes 47: ↑39 and ↓8+31
Comments17

PostSharp. Менеджмент транзакций

Reading time6 min
Views1.1K
imageКогда в последний раз я консультировал одну компанию, мы обсуждали внутренний SOA фреймворк, который должен взаимодействовать с базами данных предприятия. Этот фреймворк был SOA только разве что по названию, полностью доморощенный, и что самое грустное, он был «любимым проектом» начальника отдела ИТ. Он был не безопасным и построен на сомнительных технологиях и решениях. В общем он был сделан для решения некоторой проблемы, которой либо не существует, либо она не могла была разрешима боле простыми средствами. Моя команда была крайне разочарована структурой этого фреймворка. Но, в качестве консультанта, очень часто приходится сначала продумать пути решения проблемы, нельзя порсто сказать заказчику что его продукт «плохой», необходимо сначала построить его доверие к себе, и только потом решать более серъезные проблемы. Так или иначе такой процесс может занять годы, и все зависит от фирмы, в которой будут происходить такого рода изменения. Тогда я и задумался над тем чтобы начать использовать аспектно-ориентированный фреймворк чтобы решить эту проблему
Читать дальше →
Total votes 5: ↑2 and ↓3-1
Comments0

PostSharp. Отложенная загрузка зависимостей

Reading time7 min
Views1.9K
Кусок кода, представленный ниже, вы наверняка писали не один раз. А что более вероятно – десятки раз. Обычно это пишется, когда необходимо использовать некий репозиторий, который будет предоставлять данные для вашего приложения. Если у вас мало времени, и вы торопитесь, это отличный способ получить что-либо таким образом, что это будет загружено в память только тогда, когда это вам понадобится, но не раньше (например, операция сохранения повлекла за собой обращение к подсистеме сериализации, однако до этого она не была нужна). И ведь на самом деле получается, что этот кусок кода с одной стороны одинаков, а с другой – его приходится писать не один раз.
Как правило, я и многие программисты, предпочитаем использовать в данном месте IoC контейнер, чтобы решать задачи такого рода. Однако это не всегда так просто сделать, особенно когда я программирую в рамках отсутствия Dependency Injection в библиотеке, которую я использую (WinForms, WebForms, …). Давайте разберемся, почему решая эту задачу без использования PostSharp, вы потратите гораздо больше времени и проделаете больше работы.
Читать дальше →
Total votes 12: ↑8 and ↓4+4
Comments13

PostSharp. Решение задач логгирования и аудита

Reading time12 min
Views6.3K
И снова здравствуйте! В прошлый раз при обсуждении АОП, мы с вами говорили о решении задач кэширования. Сегодня мы поговорим о не менее часто встречающейся задаче – задаче логгирования и аудита. Нам часто приходится сталкиваться с такими ситуациями, как, например, анализ чужого кода. Представьте себе, что вам дали задачу интеграции с библиотекой стороннего производителя. Основной инструментарий чуть ли не каждого разработчика — .net reflector, ILSpy, dotPeek дают отличное представление о коде программы. О ее алгоритмах, структуре, возможных местах ошибок. И покрывают большой процент вопросов к программному продукту. Однако так происходит до тех пор, пока вы не начинаете ее активно использовать. Тут могут возникнуть как проблемы с производительностью, так и с непонятными «багами» внутри стороннего продукта, которые, если не иметь дизассемблера с функцией отладчика, не так-то просто найти. Или, например, вам необходимо просто следить за значениями переменных, не останавливая продукт в точках останова, real-time. Такие места часто необходимо срочно и быстро исправлять. А как при исправлении этого кода не написать программу, которая потом будет в топе сайта govnokod.ru? О таких ситуациях мы сейчас и поговорим.
Читать дальше →
Total votes 23: ↑16 and ↓7+9
Comments9

Postsharp. Решаем задачу кэширования

Reading time6 min
Views2.8K
Иногда попадаются такие ситуации, в которых нет никакой возможности ускорить работу некоторой операции. Она может зависеть от какого-то сервиса, который располагается на внешнем web сервере, или это может быть операция, которая дает высокую нагрузку на процессор. Или же это могут быть быстрые операции, однако, их параллельная работа может высосать из вашего компьютера все ресурсы производительности. Существует огромное количество причин чтобы использовать кэширование. Следует отметить, что PostSharp, изначально не предоставляет решений для вас какого-либо фреймворка кэширования, просто он позволяет сделать эту задачу на порядки быстрее, без каких-либо занудных действий, типа расстановки кода, отвечающего за кэширование по всему исходному тексту программы. Он позволяет решить эту задачу элегантно, вынося задачи в классы и позволяя их повторно использовать.
Читать дальше →
Total votes 14: ↑8 and ↓6+2
Comments11

PostSharp. Аспектно-ориентированное программирование vs Dependency Injection

Reading time7 min
Views6.3K
В моем разговоре с Андресом Хейлсбергом о страхах, неуверенности и сомнений относительно Аспектно-Ориентированного программирования я упомянул про общую путаницу и непонимание что АОП и DI – это конкурирующие концепции. В этой статье я попробую объяснить вам обо всех различиях и сходствах в этих двух подходах.Недавно я прекрасно провел время за чтением статьи Дино Эспосито: «Аспектно-ориентированное программирование, interception и unity 2.0», в декабрьском номере MSDN Magazine. Это великолепная статья и я настоятельно советую любому разработчику, вовлеченному в .NET разработку прочитать ее полностью. Как и многие DI фреймворки, и некоторые основные фреймворки (WCF, ASP.NET MVC), Unity предлагает похожую на АОП возможность: interceptors.
Читать дальше →
Total votes 34: ↑25 and ↓9+16
Comments23

Виртуальная клавиатура

Reading time1 min
Views19K

На днях набрел на хорошую виртуальную клавиатуру. Почему-то я ее раньше нигде не встречал, хотя продукт достойный. Наш, русский, даже имеет патент (РОСПАТЕНТа №2009611147 от 20.02.2009).
Читать дальше →
Total votes 85: ↑75 and ↓10+65
Comments35

Microsoft All-In-One Code Framework (C#, C++, VB.NET)

Reading time1 min
Views2K
В связи с недавним выходом новой версии этой «библиотеки знаний», и в связи с отсутствием новостной поддержки на Хабрахабре, заполняю этот пробел. Итак если вы:
  • Долго искали примеры реализации той или иной части API Windows и не могли найти
  • Хотите чтобы у вас на жестком диске было обширное количество работающих примеров
  • Если вы программируете на C#, C++ или VB.NET
  • Хотите чтобы для вас написали примеры работающего кода представители Microsoft MSDN Team

Если хоть один пункт вызвал в вас интерес, милости просим под кат. Могу поспорить, каждый здесь найдет именно то что ему нужно, а если не найдет, пишите отзывы, я попробую реализовать те примеры, которых вам всегда не доставало и включить их в библиотеку.
Читать дальше →
Total votes 78: ↑57 and ↓21+36
Comments10

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity