четверг, 17 октября 2013 г.

Защита исходного кода приложений

Для защиты исходного кода приложения обычно используются протекторы (представитель, .Net Reactor) или обфускаторы (представитель SmartAssembly, список можно глянуть здесь). В данной статье не планирую рассказать в чем их отличие, и какие есть разновидности. Со всем этим читатель может ознакомиться самостоятельно, например здесь. Случайно в интернете нашёл описание как можно написать собственный обфускатор ну или по крайней мере разобраться как он работает. Пример основан на использовании Mono.Cecil, что так же позволит немного разобраться в данной библиотеке.
К сожалению, блог автора пропал и его удалось восстановить благодаря веб-архиву. В итоге всех статей автор написал свой обфускатор, который выложил в открытом доступе http://code.google.com/p/ncloak/

Выкладываю ссылки в хронологическом порядке. Пользуйтесь :)

Protecting your precious code!
Protecting your precious code! - Part 2
Protecting your precious code - Obfuscation
Protecting your precious code - Mono.Cecil
Protecting your precious code - Naming inside our obfuscater
Lesson of rolling name table
Obfuscating multiple assemblies - Part 1
Obfuscating multiple assemblies - Part 2
Breaking into obfuscated code
String Encryption as an Obfuscation Tool - Part 1
String Encryption as an Obfuscation Tool - Part 2
String Encryption as an Obfuscation Tool - Part 3
The danger of the Changelog
Stopping ILDASM decompiling your assemblies
Handling 64-bit assemblies during obfuscation
How to make your Obfuscator fool Reflector
Making NCloak fool Reflector
Removing Invalid OpCodes From Obfuscated Assemblies
Hacking Mono.Cecil - allowing invalid opcodes
Tamper Proofing your Code
Tamper Proofing - an implementation (Part 1)
Tamper Proofing - an implementation (Part 2)

пятница, 15 февраля 2013 г.

Библиотека Quartz.NET

В одном из текущих проектов понадобилось реализовать windows-сервис, который бы запускался раз в час, делал своё дело и засыпал до следующего запуска. Реализовал просто - через таймер.
Потом понадобилось добавить еще одну периодическую задачу, которая должна запускаться с другим интервалом. Как бы не проблема: создаём еще один таймер и радуемся. И что плодить таймеры каждый раз? Не хочу, ибо не красиво. Создать свой движок, управляющий созданием таймеров - тоже вариант. Но решил поискать существующие решения этой задачи.
Натолкнулся на Quartz.NET - портированный с Java open source framework Quartz. На сайте библиотеки есть много примеров использования scheduler.

пятница, 7 октября 2011 г.

Sharepoint 2010: Социальные кнопки

На одном из проектов потребовалось добавить социальные кнопки к некоторой информации на сайте. Например, при отображении новости нужны были эти самые кнопки.
Решил создать контрол, который будет отображать эти самые кнопки. Данные контрол можно будет разместить как на мастер-странице, и так же включить в состав любого нашего элемента управления. Ограничение контрола: при нажатии на социальную кнопку должно происходить добавление ссылки на текущую отображаемую страницу в браузере, т.е. то что есть в адресной строке.

пятница, 26 августа 2011 г.

Sharepoint 2010: Миграция БД на другой сервер

Иногда бывает необходимо перенести базы данных с одного сервера на другой. Информация по этому храниться в статьях:

Интеграция TFS 2010 и Sharepoint 2010

У нас уже больше года развернут TFS 2010. Но как-то вышло странно, что сапожник оказался без сапог: не было интеграции TFS 2010 с Sharepoint 2010, т.е. файлики хранились на дисках.

Как только я это узнал (сам же я год работал с другой системой контроля версий, а если и касался TFS, то вся необходимая информация была в постановке задачи), сразу решил исправить это дело.

Sharepoint 2010: Протоколирование

Про пользу протоколирования написано много, в том числе и мной.
В Sharepoint для протоколирования можно пользоваться стандартным методом
try
{
    var i = 0;
    var a = 2 / i;
}
catch (Exception ex)
{
    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("My Category", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
}

Sharepoint 2010: AutoSPInstaller

Наверное многим из вас приходилось устанавливать Sharepoint 2010 на сервера. Помните какое это долгое и нудное занятие? Надо постоянно помнить конфигурацию, что и в какой последовательности устанавливать, скачивать необходимые пакеты перед установкой. Знаете же какие имена получают Базы Данных того или иного сервиса? Бррр!!!

Непрерывная интеграция (Continuous Integration)

Вот и заканчивается август. В этом месяце мне удалось сходить в отпуск и смотаться в командировку в Москву. Удалось побывать на МАКСе 2011. Продолжим писанину Улыбка
Это скорее заметка, чем полноценная статья. Здесь будут только тезисы из книги “Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска.” Поль м. Дюваль, Стивен Матиас и Эндрю Гловер (к сожалению, книга не моя, а брал почитать). В скобках в основном указано название программы-инструмента, которая позволяет выполнить описанную задачу.

пятница, 22 июля 2011 г.

Microsoft Theme Builder

В блоге Дмитрия Плотникова натолкнулся на интересное описание инструмента Microsoft Theme Builder. Данные инструмент предполагает более глубокую настройку тем.

пятница, 1 июля 2011 г.

Sharepoint 2010: Работа с Вариантами (Variations)

Спасибо IAfanasov за решение вопроса.
Рано или поздно при разработке сайтов с помощью Sharepoint возникает необходимость предоставить разные варианты отображения одного и того же сайта. И это без разницы доступен ли сайт через интернет или им пользуются только в интрасети.
Сценарии, при которых может потребоваться использование вариантов, могут быть следующие:
  • Несколько языков. В этом сценарии большая часть контента создается на языке исходного варианта веб-сайта и копируется в некоторые или во все конечные варианты веб-сайта для перевода на различные языки. Например, контент может быть создан на английском языке и скопирован в конечные варианты веб-сайтов для перевода на немецкий, французский и испанский языки
  • Несколько устройств. Логику работы страницы VariationRoot.aspx можно настроить так, чтобы перенаправить пользователей на страницы, предназначенные для работы с различными типами устройств. Например, можно использовать конечные варианты веб-сайта со страницами, предназначенными для показа на устройствах с различными размерами экранов или различным разрешением экранов.
  • Несколько расположений или фирменных стилей. Например, организация, предоставляющая автомобили в аренду, может использовать конечные варианты веб-сайтов для всех городов, в которых у этой компании есть филиалы. Большая часть сведений о компании одинакова для всех филиалов, поэтому для этих страниц используются варианты, а остальной контент, например специальные предложения или мероприятия по продвижению услуг, создается на конечных вариантах веб-сайта, для которых он предназначен.

Еще статьи

2leep.com