воскресенье, 16 марта 2008 г.

Как подписать стороннюю сборку

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

Итак:

1. Декомпилируем неподписанную dll в MSIL код.

ildasm providedAssembly.dll /out:providedAssembly.il


2. Убираем куда-нибудь исходную dll (она нам больше не понадобится)

3. Компилируем полученный на этапе №1 код, подписывая его:

ilasm providedAssembly.il /dll /key=keypair001.snk



Самое интересное в этом методе - таким сособом можно подписать даже обфусцированные сборки.

пятница, 14 марта 2008 г.

Альтернатива Singularity OS: CosmOS

Cosmos (C# Open Source Managed Operating System) - тоже является операционной системой, написанной на дотнете. Те, кому интересно - могут почитать краткий обзор на русском, а также посетить главный сайт.

Вообщем-то, идея та же - вид сбоку. Если SingularityOS - это попытка реализовать принципиально иной способ работы с процессами в системе, то CosmOS - это (насколько я понял) перенос дотнета на уровень железа. Другими словами - тот же самый привычный .Net Framework, но без Windows.

P.S.: кстати, если попинать гугл - можно и еще несколько подобных операционных систем найти. Например - SharpOS

среда, 12 марта 2008 г.

Баги, баги... Кругом одни баги!..

Играюсь с очень интересным сервером MP3 CMS (брать/смотреть тут).

Проект представляет собой ASP.Net сайт для каталогизации/отображения фонотеки со встроенным сканером mp3-файлов. Сканер живет на тегах, поэтому у кого с тегами в музыке проблемы - будут проблемы и с сервером :)

Выглядит это все очень красиво. Работает шустро. Успешно справилось с моими 170 гигами музыки (это вторая программа после iTunes, которая способна работать без тормозов с таким количеством музыки). Есть возможность проиграть музыку прямо со страницы - что очень хорошо, можно забыть про бесконечные копирования через фтп на работу "что-нибудь послушать".

Это плюсы. А теперь про минусы.

Последняя версия - 1.5.0.1 пишет обложки к альбомам и sqllite-овскую базу в свою папку App_Data.

Проблема в том, что в новом IIS7 по-умолчанию запрещена модификация файлов. Т.е. создавать файлы можно, а вот изменять - нельзя. Соответственно, первым умер sqllite :(

Во-вторых, сервер блокирует доступ из сайта в любые папки вне папки с сайтом (я точно не уверен - но сильно на это похоже). Таким образом, вторым умер сканер. С другой стороны, проблемы со сканером могли быть вызваны невозможностью писать в базу данных. Логов нет - они тоже того... умерли.

Шаманские пляски с бубном в течение двух дней никакого эффекта не дали. В частности, пробовал дать разрешение на модификацию файлов (да и вообще на полный доступ) к папке с данными. Пробовал запускать сайт не под стандартным аккаунтом NETWORK SERVICE, а под админским - эффект нулевой. Поиски в инете дали только одно - всех очень сильно интересует вопрос изменения файлов :) Собственно, единственный внятный ответ оказался несколько неожиданным:

"As a result of this and other compatibility issues, we're considering reverting this change in Longhorn Server / Vista SP1."

Вы спросите, а как я тогда с ним экспериментировал? Берем и запускаем сайт в VS2008 ASP.Net Development Server - все начинает работать, сканер индексирует папку с музыкой в свою базу, собирает обложки альбомов и все это складывает в папку App_Data. После чего результат подсовываем уже сайту, который крутится в IIS7. Удивительно - но работает!

На днях планирую поставить/поиграться Windows Server 2008 RTM - заодно и проверю, поправили ли разработчики как обещали - или воз и ныне там.

Поиск похожих картинок

Цитирую:

В Сети появилась новая поисковая система Picollator, использующая мультимедийные запросы.

Для нахождения требуемого изображения и связанного с ним ресурса пользователю достаточно загрузить в качестве запроса пример желаемой картинки. Результаты поиска зависят только от содержания контента и не требуют обязательного наличия текстовых описаний. Для улучшения результатов поиска в качестве дополнения к изображениям используются ключевые слова.

Уникальной особенностью системы является способность находить ресурсы с изображениями похожих людей. Пользователь может загружать фотографии с несколькими людьми, и система найдет ресурсы с изображениями людей, похожих на все лица с фотографии-запроса.


Вроде бы даже работает правильно :) Даже интересно - а что там внутри?

пятница, 7 марта 2008 г.

Quake III портировали на .Net Framework

Бывают же чудеса на свете :) Оказывается Quake III портировали на дотнет. В процессе было исправлено порядка 32000 ошибок и дофига предупреждений. Но интересно другое:

"Using Sebastian’s suggestion I ran timedemo’s without vsync and turned off the fps cap. Here are the numbers (this is from demo “four” that comes with the Ultimate Quake box you see in stores). I ran each instance three times to make sure there weren’t any flukes:

Running original Quake III commercial game:

Test run #1: 324.2 fps
Test run #2: 330.9 fps
Test run #3: 332.5 fps

.NET port:

Test run #1: 328.6 fps
Test run #2: 336.9 fps
Test run #3: 336.8 fps

At first it may seem weird that the .NET version is slightly faster, but remember, the original commercial quake3.exe uses its own custom interpreter to run QVM files responsible for all of the game logic (except rendering of course). My .NET port uses DLL’s also _interpreted_ by the .NET framework instead of QVM’s. So what you’re really doing is comparing who’s interpreter is faster."


Кстати, это уже далеко не первая попытка сделать игру на фреймворке. Нет, я, конечно, понимаю, что это совсем "сделать", но все-таки - работает ведь! В основном, пока это разные мелкие игрушки, но тенденция есть. И это не может не радовать - может наконец-то игры перестанут падать от малейшего чиха?