Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

Инъекции MSIL кода в стороннюю сборку при помощи Mono.Cecil. Реализация принципов АОП в NET

Время на прочтение12 мин
Количество просмотров19K

Введение


В данной статье я расскажу про то, как можно добавлять свой код в существующие .NET сборки и о том, как это связано с аспектно-ориентированным программированием. Статья будет сопровождаться работающими примерами, так как я считаю, что код — это лучший способ донести идею.

Многие .NET разработчики знают, что для доступа к объектам чужой сборки можно использовать Reflection. С помощью типов из System.Reflection мы можем получить доступ ко многим объектам .NET сборки, просмотреть их метаданные, и даже использовать те объекты, доступ к которым ограничен (например, private методы чужого класса). Но использование Reflection имеет свои ограничения и главная причина этому — данные, с котороми вы работаете через Reflection, все еще считаются кодом. Таким образом, вы, к примеру, можете получить CodeAccessSecurity exception, если сборка, к которой вы пытаетесь применить Reflection, запрещает это. По этой же причине Reflection работает довольно медленно. Но наиболее важным для данной статьи является то, что стандартный Reflection не позволяет изменять существующие сборки, только генерировать и сохранять новые.

Mono.Cecil


Качественно иной подход предлагает бесплатная библиотека с открытым исходным кодом Mono.Cecil. Главное отличие подхода Mono.Cecil от подхода Reflection в том, что данная библиотка работает с NET сборкой как с потоком байт. При загрузке сборки, Mono.Cecil разбирает PE заголовок, CLR заголовок, MSIL код классов и методов и т.д. работая напрямую с потоком байтов, представляющим сборку. Таким образом, с помощью данной библиотеки можно как угодно (в пределах предусмотренного) изменять имеющуюся сборку.
Читать дальше →
Всего голосов 49: ↑45 и ↓4+41
Комментарии14

Как обмануть NET.Reflector

Время на прочтение3 мин
Количество просмотров15K
Сегодня я задумался о том, как обфускаторы скрывают код методов от утилит деобфускации вроде NET.Reflector. Как ни странно, но я не нашел в интернете никакой полезной информации по этому вопросу (возможно, плохо искал) и поэтому пришлось провести маленькое исследования самостоятельно. Под катом краткая заметка о результатах. В примере кода будет снова использоваться Mono.Cecil и генерация кода, так что не забудьте прочитать мою первую статью.

Читать дальше →
Всего голосов 63: ↑55 и ↓8+47
Комментарии28

Простой Javascript Benchmarker

Время на прочтение1 мин
Количество просмотров1K
Как вы замеряете производительность javascript кода?
У меня это происходило так:
  1. создаю файл index.html;
  2. копирую откуда-нибудь шаблон HTML;
  3. добаляю тэг script, в котором будет жить тестируемый код;
  4. если нужно замерить работу с массивами, то обязательно создаю или беру готовый генератор случайных массивов.
Читать дальше →
Всего голосов 10: ↑7 и ↓3+4
Комментарии4

Юнит-тестирование и CodeCoverage для Javascript-кода

Время на прочтение4 мин
Количество просмотров8.1K
В этой заметке расскажу о своем опыте юнит-тестирования JS-кода, опыте использования среды выполнения тестов js-test-driver, ее возможности code coverage и скручивании ежа с ужом, а именно данных о code coverage от js-test-driver и генератора отчетов о покрытии PHP_CodeCоverage. Расскажу и покажу как получить вот такие отчеты о покрытии кода...
Читаем дальше...
Всего голосов 63: ↑62 и ↓1+61
Комментарии29

extsrc.js — загружаем все скрипты асинхронно и уже после отрисовки страницы (даже с document.write)

Время на прочтение4 мин
Количество просмотров21K
Хочу Вам рассказать о штуке, которую я изобрел сегодня, чтобы ускорить процесс загрузки сайтов. Все вы знаете, что <script src="..."></script> задерживает отрисовку страницы, пока не загрузится этот скрипт. Если их десятки — это может сереьезно замедлить работу сайта — в результате пользователь 20 секунд пялится на пустую (или недорисованную) страницу из-за какого-нибудь тупящего социального виджета (умножить на десяток этих виджетов).

Не правда ли было бы круто, если бы можно было сказать <script extsrc="..."></script> ("extsrc" = "грузи потом"), чтобы скрипты загружались после того как страница отрисована?

Все бы хорошо, но есть document.write… Сегодня я наконец решил его проблему — представляю extsrc.js — скрипт, который запустит все скрипты после отрисовки страницы (даже если они содержат document.write — и правильно отрисуется все).

Результат? Супер-быстрая загрузка страниц, даже если там море всяких внешних скриптов.

Использование:

Заменяем <script src="..."> на <script extsrc="...">.

Итого получается:

<script src="http://whiteposts.com/extsrc_js/extsrc.js"></script>
<script extsrc="..."></script>

все остальное под катом
Всего голосов 171: ↑157 и ↓14+143
Комментарии131

Улучшаем читабельность CSS-кода с помощью «стилевых гидов»

Время на прочтение7 мин
Количество просмотров4.6K
В W3Cast #3 Денис ( CurlyBrace) затронул тему использования styleguides, а у меня как раз уже была статья по этой теме. Поэтому я решил поделиться ей, чтобы показать наглядные примеры, демонстрирующих возможности «стилевых гидов».
«Стилевые гиды» — это свод правил и соглашений, предоставляющих разработчикам информацию о структуре кода и принятых правилах оформления. Чаще всего используется группой разработчиков, при совместном участии в проекте или же для самодисциплины при разработке кода.
Если проект большой, то он обрастает многочисленными файлами CSS с различными цветовыми схемами, типографикой и другими стилевыми установками. Чтобы избежать путаницы в структуре кода и не забыть что да как, нужно разрабатывать структурированный код, который впоследствии будет проще использовать, править и частично использовать в других проектах.
Вход для тех, кому интересно
Всего голосов 61: ↑55 и ↓6+49
Комментарии69

Список полезных инструментов для CSS разработчика

Время на прочтение8 мин
Количество просмотров71K
Это не попытка создать список всех существующих инструментов для CSS разработки. Только некоторые, наиболее полезные были отобраны и размещены в соответствующих категориях.


Чтобы инструмент был по-настоящему полезен, у него должна быть хорошая документация и дружелюбный интерфейс. К сожалению, некоторые инструменты в списке не полностью попадают под данные критерии. Если кто-то знает лучшие альтернативы с более дружелюбным интерфейсом и большей функциональностью, пишите в комментариях.
Читать дальше →
Всего голосов 179: ↑170 и ↓9+161
Комментарии65

Как верстать красиво или чем плохи css-фреймворки

Время на прочтение8 мин
Количество просмотров33K
Преимущества дивной вёрстки, семантичной разметки и разделения содержимого и дизайна описаны десятки, сотни раз, но все-равно находятся люди, которые не понимают самой идеи html и css, пишут в коде такие ужасные вещи, как
<span style="color:blue">

, когда хотят расскасить текст в синий цвет и искренне считают, что эта запись чем-то лучше, чем
<font color="blue">

, наивно веря в этом деле валидатору. А ведь правильный подход в написании html и css лежит на поверхности. Достаточно просто посмотреть историю развития этого языка, почитать статьи десятилетней давности и проанализировать. Я, при поддержке theshock, постаралась в этот статье упорядоченно и коротко изложить наше видение этого вопроса.

Читать дальше →
Всего голосов 200: ↑166 и ↓34+132
Комментарии174

HTML5 атакует. Первая кровь

Время на прочтение1 мин
Количество просмотров2.8K
Итак, сбываются худшие опасения Flash-разработчиков. Апологеты HTML5 торжествуют. Еще бы: появилась возможность сравнить новую революционную технологию HTML5 с древней как мир, и от того погибающей технологией Flash.

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

Шутки-шутками, а для меня это очень и очень радостное событие. Все мы видели, что сегодня Flash воспринимается пользователями как технология для производства баннеров.

Я очень надеюсь, что HTML5 отвоюет этот рынок себе, и понемногу груз ответственности за надоедливые и жрущие процессор баннеры ляжет на HTML5. И наконец Flash-платформу начнут воспринимать как серьёзную технологию для производства серьёзных приложений и игр.

Давайте пожелаем удачи HTML5, и искренне посочуствуем HTML-разработчикам в связи с очередным витком браузерных несовместимостей.

Удачи вам, ребята. Она вскоре вам очень понадобится.
Всего голосов 198: ↑123 и ↓75+48
Комментарии232

Как создать вебсайт для мобильных устройств

Время на прочтение3 мин
Количество просмотров64K

Стили


User Agent

Один из способов включения стилей для мобильного устройства — это использование User Agent, которую получает сервер от клиента.
Этому может помочь набор скриптов: code.google.com/p/mobileesp, а также сервис от яндекса api.yandex.ru/detector
При работе с User Agent только одна проблема — это постоянно появляющиеся новые User Agent.
Читать дальше →
Всего голосов 133: ↑128 и ↓5+123
Комментарии43

Composite C1 теперь OpenSource .NET CMS

Время на прочтение1 мин
Количество просмотров6K
Датская компания Composite A/S объявила о переходе своей CMS в OpenSource.
Работает на IIS, .NET 4 и ASP.NET. Как базу данных может использовать как текствый XML так и MS SQL
Кратко об возможностях:
  • Ориентирована на использования XSLT для формирования HTML, но также позволят вставлять обычные ASP.NET контролы
  • Генерируемые дататипы
  • Древовидная структура страниц
  • Темплейты с разным количеством контент-блоков

Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии2

Как работают алгоритмы сортировки

Время на прочтение1 мин
Количество просмотров22K
Иногда для понимания того, как работает та или иная вещь, лучше один раз увидеть, чем сто раз услышать.

Замечательный сайт www.sorting-algorithms.com позволяет увидеть, как сортируются данные разными алгоритмами. Вы сможете посмотреть анимацию в зависимости от алгоритма, исходных данных.



Все это бегает и сортируется прямо на ваших глазах!

Работает на Google App Engine, видимо, поэтому и лежит от посетителей с «Хабра».
Всего голосов 185: ↑151 и ↓34+117
Комментарии63

Проблема с безопасностью при использовании аутентификации формами в ASP.NET

Время на прочтение2 мин
Количество просмотров1.9K
Сообщает Peter Vogel

Два исследователя безопасности, Тай Донг (Thai Duong) и Джулиано Риццо( Juliano Rizzo), обнаружили баг в используемом по умолчанию механизме шифрования, который задействован в защите куки, обычно применяемых для реализации аутентификации формами (Forms Authentication) в ASP.NET. С помощью разработанного исследователями инструмента (Padding Oracle Exploit Tool или POET), можно многократно модифицировать куки, зашифрованные с помощью механизма шифрования AES и, исследуя возвращаемые ошибки, вычислить машинный ключ (Machine Key), используемый для шифрования куки. По утверждениям исследователей, процесс надёжен на 100% и занимает от 30 до 50 минут для любого сайта.

Читать дальше →
Всего голосов 33: ↑24 и ↓9+15
Комментарии7

Javascript играет в шахматы — размер скрипта 1 KB!

Время на прочтение1 мин
Количество просмотров19K


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

По ссылке можно сразиться с компьютером прямо в окошке браузера, а также ознакомиться с мозгодробильным весьма заковыристым кодом скрипта.
Всего голосов 125: ↑119 и ↓6+113
Комментарии141

Десять вещей, которые вы не ожидали от HTML/Javascript

Время на прочтение1 мин
Количество просмотров4.6K
Пятнадцать лет назад трудно было представить, что когда-нибудь HTTP, HTML, CSS и Javascript станут основными технологиями для доступа к информации и заменят целые классы десктопных приложений. Например, вот десять примеров того, что сложно было ожидать от веб-технологий в 2010 году, но они это делают.

1. Интерактивный рендеринг физики ткани


2. Распознавание объектов на видео в реальном времени


Читать дальше →
Всего голосов 117: ↑88 и ↓29+59
Комментарии41

Обзор нескольких новых плагинов jQuery

Время на прочтение4 мин
Количество просмотров6.4K
Довольно часто я наступаю на одни и те же грабли. Стараясь выполнить какой-нибудь проект побыстрее, я с головой ухожу в реализацию необходимой функциональности. А через неделю, мне на глаза обязательно попадается описание библиотеки, фреймворка или плагина, воспользовавшись которыми, я мог бы выполнить свою часть работы в разы быстрее. В общем, сейчас я стараюсь быть в курсе готовых решений в интересующих меня областях. В последнее время мне часто приходится работать с javascript и поэтому, сейчас я уделяю особое внимание библиотеке jQuery и ее плагинам. Должен сказать, что упускать из виду такое разнообразие готовых решений просто нельзя. Данная статья сделана на основе обзора «50 Awesome New jQuery Plugins», который я прочитал пару дней назад.
Читать дальше →
Всего голосов 132: ↑123 и ↓9+114
Комментарии28

Устанавливаем Microsoft Hyper-V Server 2008 R2 на Flash-drive

Время на прочтение8 мин
Количество просмотров23K

Когда VMware выпустили бесплатную версию своего гипервизора под названием ESXi – через некоторое время на рынке появились бездисковые сервера, загружающие сам гипервизор с Flash-карты небольшого объема. Сами же файлы виртуальных машин при этом хранятся на внешних СХД. Это позволяет снизить стоимость оборудования, так как отпадает необходимость в оснащении серверов своими собственными жесткими дисками и RAID-контроллерами. Microsoft выпустили свою версию гипервизора, под названием Hyper-V, включив ее в состав ОС Windows Server 2008. Вслед за этим, был выпущен бесплатный продукт под названием Hyper-V Server 2008, представляющий из себя предельно урезанную версию Windows Server 2008 Server Core, с единственной ролью – Hyper-V. В отличие от продуктов VMware, Hyper-V не требует покупки каких-либо лицензий на отдельные «фичи» гипервизора, и может быть предпочтительнее, если в качетсве гостевых ОС будут использоваться только ОС семейства MS Windows. В версии Hyper-V Server 2008 R2 используется новый гипервизор – Hyper-V 2.0 с поддержкой его новых функций – в частности, Live Migration. Так же Hyper-V Server 2008 R2 может работать на более мощных системах (с большим количеством процессоров и объемом ОЗУ), чем предыдущая версия, и может работать в составе Failover-кластера. Тем не менее – не всем известно, что Hyper-V Server 2008 R2 тоже может загружаться с flash-накопителя, точно так же, кстати, как и Windows Server 2008 R2 и Windows 7. В этой статье я расскажу, как сделать Hyper-V Server 2008 R2 Bootable Flash Drive.
Читать дальше →
Всего голосов 56: ↑34 и ↓22+12
Комментарии68

Плагин для всплывающих подсказок Simpletip

Время на прочтение2 мин
Количество просмотров14K
image

Минусы jQuery Tools Tooltip, плюсы SimpleTip, а так же немного о том, как решить некоторые проблемы его использования.
Читать дальше →
Всего голосов 69: ↑59 и ↓10+49
Комментарии12

jQuery плагин визуального стека сообщений

Время на прочтение2 мин
Количество просмотров3.8K
Стояла задача динамического визуального отображения реакции на действия пользователя со стороны системы.
Другими словами: изменилось какое-то состояние объекта — вывести сообщения об удачном завершении сохранения изменения в базе/системе.
Написание плагина не заставило себя ждать...
 
Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии35

jQuery без рамок

Время на прочтение4 мин
Количество просмотров3.6K
Фреймворк — набор инструментов, но не традиций или конвенций программирования, а цель любого приложения — это скорость выполнения и правильность результатов. В опубликованной статье показано эффективное использование запросов к DOM, но не только от этого приложение на jQuery будет работать быстрее.

Читать дальше →
Всего голосов 82: ↑57 и ↓25+32
Комментарии40

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность