avatar

Бандл… Пара-пара-па хэй! или Bundle Transformer шагает по планете 2

Опубликовал в блог Новости IT технологий
0
Упоминания о Bundle Transformer в Интернете

Я немного отойду от формата предыдущей статьи и прежде чем привести подборку интересных упоминаний о Bundle Transformer, я расскажу об изменениях, которые произошли в проекте за последние полгода.

До августа прошлого года библиотека dotless была основным средством для работы с LESS в сообществе .NET-разработчиком, и входила в состав практически всех инструментов клиентской оптимизации для ASP.NET: Cassette, SquishIt, Combres и RequestReduce. Bundle Transformer также не являлся исключением: библиотеки dotless и DotlessClientOnly (облегченная версия) использовались в модулях BundleTransformer.Less и BundleTransformer.LessLite.

Ситуация в корне изменилась, когда вышел Twitter Bootstrap 3.0. Исходники таблиц стилей Bootstrap 3.0 были написаны на LESS 1.4.X, а библиотека dotless на тот момент поддерживала более старую версию LESS (поддержка LESS 1.4.X появилась в dotless только в декабре 2013 года). Фактически все перечисленные инструменты для работы с LESS в одночасье стали морально устаревшими.
Читать дальше →
avatar

[Перевод] На границах, приложения не являются объектно-ориентированными

Опубликовал в блог Новости IT технологий
0
Я получил множество отзывов на мою недавнюю серию постов по Poka-yoke проектированию (я был бы расстроены, если было бы иначе). Множество из этих отзывов касаются различных технологий сериализации или трансляции, используемых обычно на границах приложения: сериализация, XML (де)гидратация (прим. переводчика: тоже самое, что и сериализация), UI-валидация и т.д. Заметьте, что такая трансляция происходит не только по периметру приложения, но также и на уровне сохраняемости (persistence). ORM-ы также являются трасляционными механизмами.
Общим для многих комментариев является утверждение о том, что большая часть технологий сериализации требует наличия конструктора по умолчанию. Например, класс XmlSerializer требует наличия конструктора по умолчанию и публичных, доступных для записи свойств. Большая часть объектно-реляционных преобразователей, которые я изучал, похоже, имеют те же требования. Контролы Forms и WPF (UI – также граница приложения) почти обязаны иметь конструктор по умолчанию. Не нарушает ли это инкапсуляцию? И да и нет.
Читать дальше →
avatar

[Перевод] «Запах» проектирования: временная связность

Опубликовал в блог Новости IT технологий
0
Это первый пост из серии о Poka-yoke проектировании – также известном, как инкапсуляция.

Известной проблемой в проектировании API является временная связность, которая получается в том случае, если в классе присутствуют скрытые отношения между двумя или более членами, требующие от клиента правильной последовательности вызовов. Это жёстко связывает члены класса во временном разрезе.
Читать дальше →
avatar

Создаем первое приложение на NancyFX часть пятая. Тестирование приложения

Опубликовал в блог Новости IT технологий
0
В предыдущих статьях я продемонстрировал Вам как можно с легкостью создать и сконфигурировать под свои нужды приложение на NancyFX. Однако в нынешнее время преставить себе процесс промышленной разработки програмного обеспечения в отрыве его от тестирования просто не возможно. Давайте добавим к нашему первому приложению проект для его тестирования.
Читать дальше →
avatar

Создаем первое приложение на NancyFX. Часть шестая. Nancy.Selfhosting

Опубликовал в блог Новости IT технологий
0
В завершении цикла статей хотелось бы описать такую важное преимущество NancyFX как Nancy.SelfHosting. Данный модуль Nancy позволяет нам хостить наше приложение без использования IIS, на тех операционных системах где есть .NET или же MONO. Читать дальше →
avatar

Неявные предикаты

Опубликовал в блог Новости IT технологий
0
Речь здесь пойдёт о некоторых аспектах компьютерной безопасности, связанных с запутыванием кода программы. Именно это мне было интересно в связи с разработкой обфускатора .NET приложений – программы для защиты .NET кода от взлома. Есть и другая – тёмная сторона: запутыванием кода очень интересуются разработчики вирусов и других нехороших штук, но нам они неинтересны.


Эмуляторы

Итак, Вы придумали супер алгоритм для запутывания кода программы. При декомпиляции код выглядит просто вырвиглазно и никто точно такое анализировать не будет. Казалось: победа! Но нет. Естественно обфусцированный код никто анализировать не будет… руками. Хакер поймёт как вы код запутывали и напишет «распутывалку». Если Ваш алгоритм был достаточно силён, то хакеру придётся писать собственный эмулятор, но и это не такая проблема как может показаться на первый взгляд – в сети есть доступные эмуляторы и даже специально написанные именно для целей взлома.

Из теории компьютерных наук известно, что не существует и никогда не будет существовать алгоритма, определяющего остановится ли программа или будет работать вечно – так называемая «проблема останова». Это гарантирует, что хакерский эмулятор, распутывающий обфусцированную программу, будет делать это как бы «локально»: он не сможет узнать состояние и значение всех переменных, задействованных в каждом участке кода и поэтому в точках условного ветвления часто будет полагать, что возможны все варианты хода программы. Вот тут-то на ум и приходит решение: запутанный код будет наполнен переходами по условиям, которые будут всегда истинны, но проэмулировать и понять это будет трудно. Примерно вот так:

<code>if ((x+x & 1) == 0)
  good_code
else
  мусор
</code>

«Но это же как раз одна из тех запутывалок, которые хакер и собирается обходить с помощью эмулятора» — скажете Вы и будете правы. А что если придумать тысячу подобных фокусов? О, это решение, если у Вас есть легион программистов, каждый из которых придумывает трюки не похожие на трюки других. В реальности это не так. В реальности Вы думаете неделю и придумываете тридцать трюков, а хакер смотрит на код один день и находит все тридцать трюков, потому что тридцать – это не так уж много.

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

Как ExpressionTrees помогают тестировать WebApi

Опубликовал в блог Новости IT технологий
0
Всем хороши ApiController'ы, да не создают они WSDL и нельзя просто так взять и получить proxy. Да, ApiController'ы неплохо тестируются unit-test'ами. Но юниты пропускают ошибки транспортного уровня и в целом без парочки end-to-end сценариев как-то неудобно. Можно конечно смириться, взять HttpClient и написать примерно такой код:

<code>HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:56851/");

// Add an Accept header for JSON format.
client.DefaultRequestHeaders.Accept.Add(
    new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = client.GetAsync("api/User").Result;

if (response.IsSuccessStatusCode)
{
    var users = response.Content.ReadAsAsync<IEnumerable<Users>>().Result;
    usergrid.ItemsSource = users;

}
else
{
    MessageBox.Show("Error Code" + 
    response.StatusCode + " : Message - " + response.ReasonPhrase);
}
</code>
Но как же это муторно каждый раз лезть в описание контроллеров, проверять типы, короче хочется вот так:
<code>var resp = GetResponse<SomeController>(c => gc.SomeAction(new Dto(){val = "123"}));
</code>
Как выяснилось, это вполне можно реализовать применив немного уличной магии деревья выражений
Читать дальше →
avatar

Использование сервиса Yandex Direct на примере метода GetRegions (WCF клиент)

Опубликовал в блог Новости IT технологий
0
Яндекс.Директ работает некорректно по протоколу SOAP, так как фактическая схема данных, используемая в ответах на запросы не совпадает со схемой из предоставленного сервисом описания WSDL. А именно не совпадает пространство имен (вместо «» приходит «namespaces.soaplite.com/perl» и «xml.apache.org/xml-soap»), а также имена параметров (например, в методе GetRegions вместо имени «return» приходит «ArrayOfRegionInfo»).
Читать дальше →
avatar

Создаем первое приложение на NancyFX. Часть пятая. Super Simple View Engine

Опубликовал в блог Новости IT технологий
0
В предыдущей статье Создаем первое приложение на NancyFX. Часть четвертая. Продолжаем работу с модулями мы продолжали изучение модулей. В данной статье мы изучим идущий с Nancy из коробки графический движок Super Simple View Engine.
Читать дальше →
avatar

[Из песочницы] Некоторые полезные атрибуты о которых вы могли не знать

Опубликовал в блог Новости IT технологий
0
Здравствуйте, я хотел бы вам рассказать о некоторых редко используемых, но весьма полезных атрибутах из мира .NET.

Итак, поговорим о:
Читать дальше →