понедельник, 22 октября 2007 г.

C++ Solution Upgrade: from Visual Studio 2003 to 2005

Хроника одного апгрейда.

Пришлось тут по долгу службы перевести один из проектов с Visual C++ 7.1 (2003) на VC++8 (2005). Памятуя, сколько времени я убил, когда четыре года назад переводил его с VC++ 6.0 на семерку, я заранее смирился с вечностью, полной невыносимых страданий...


Вообще я доволен - отпортировать получилось довольно быстро - проект объемом чуть больше 100K SLOC, десяток dll-ок и статических библиотек, а получилось перевести часов за 25. В прошлый раз с VC++6 недели три пришлось трахаться, потому что они там категорически наменяли в синтаксисе темплейтов.

Мини-лог по результатам конверсии

0. Когда открвыаешь solution от 7.1 новым Visual Studio, студия предлагает его отконвертить к новому формату. Конвертер, в отличии от asp.net (это отдельная печальная песня), вполне пристойно конвертит плюсовые проекты в формат "восьмерки" .

1. STLPort v4.x с VC++8 не работает. Оказалось, что http://stlport.com/ давно заброшен и разработка переехала на sourceforge (http://stlport.sourceforge.net/). Обновление, впрочем, прошло почти безболезненно - добавил пару include, да перекомпилировал гомерический шаблон _Not_within_traits прямо к себе в код, потому что шаблон теперь не public.

2. Компилятор C++ в 2005 ужесточил требования к синтаксису. От этого перестали работать конструкции вида:

for (int i =1;.....) {...}; doSomething(i)

декларацию i в данном сучае пришлось поднять над for:

int i;
for (i=1;.....) {...}; doSomething(i)

Еще теперь нельзя не указывать return type (раньше компилятор подставлял туда int). Больше они этоу мракобесную совместимость с plain C не поддерживают, и слава богу.

Из неприятных моментов - пришлось повозиться с ошибками вида "unresolved external symbol "wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)" (?ConvertStringToBSTR@_com_util@@YGPA_WPBD@Z)" - как оказалось, разные проекты у меня имели разные настройки /Zc, отчено в библиотеке функция описывалась с native wchar_t, а в зависимой - через const unsigned char *. Не компилировалось и орало.

4. RTL/ATL

Микрософторцы в VS 2005 сделали безопасные замены для некоторых функций STL с суффиксом _s и теперь, когда компилируешь старый проект, огребаешь неимоверное количество предупреждений на эту тему. Лечил просто - добавил define _CRT_SECURE_NO_DEPRECATE и на безопасные методы переходить не стал -- не был готов перетестировать весь код да и нет пока желания использовать микросовтовскую нестандартовщину.

wcsstr теперь возвращает не wchar_t *, а const wchar_t * так что пришлось подправить код, который сохранял результаты этой функции.


Вроде, все, собралось, запыхтело, не падает :-) Отдал на тестирование.

Ссылки по теме
http://msdn2.microsoft.com/en-us/library/ms177253(VS.80).aspx
http://msdn.microsoft.com/chats/transcripts/vstudio/vstudio_061704.aspx
http://msdn2.microsoft.com/en-us/library/dh8che7s(VS.80).aspx

среда, 17 октября 2007 г.

Смешной комикс про sql injection


понедельник, 15 октября 2007 г.

MVC Framework для ASP.NET

Чтобы не забылось - рассказ на час про Model-View-Controller Framework, который делают для ASP.NET и VS. Обещают в этом году первую бету.

http://www.hanselman.com/blog/ScottGuMVCPresentationAndScottHaScreencastFromALTNETConference.aspx

пятница, 5 октября 2007 г.

Другие ссылки по ASP.NET Debugging on Production

В последнее время, очень много приходиться отлаживать приложения на production. Лучше всего это делать, конечно же, при помоши WinDbg и crash dumps.

Выкладываю сюда несколько полезных ссылок, посвященных Этому Самому Делу:


И напоследок, bouns от Not-a-kernel-guy, посвященный (никогда не догадаетесь), отладке. Правда, отладке native code, зато по-русски и с удальцой :-)

Встречайте: http://blog.not-a-kernel-guy.com/2007/10/03/246

четверг, 4 октября 2007 г.

Радостная новость - Microsoft будет отдавать исходники некоторых своих сборок .Net Framework 3.5. И можно будет отлаживаться прямо внутри них!
"Today I'm excited to announce that we'll be providing
this with the .NET 3.5 and VS 2008 release later this year.
We'll begin by
offering the source code (with source file comments included) for the .NET
Base Class Libraries (System, System.IO, System.Collections,
System.Configuration, System.Threading, System.Net, System.Security,
System.Runtime, System.Text, etc), ASP.NET (System.Web), Windows Forms
(System.Windows.Forms), ADO.NET (System.Data), XML (System.Xml), and WPF
(System.Windows). We'll then be adding more libraries in the months ahead
(including WCF, Workflow, and LINQ). The source code will be released
under the
Microsoft Reference License (MS-RL)."


http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx

Чарующее сообщение ою ошибке

Это мне кажется, прекрасно:

"Unhandled exception at 0x7c943345 in EdgeCAM.exe: 0xC0150010: Деактивируемый контекст активации не является активным для данного потока исполнения."

Отсюда: http://laplace.livejournal.com/107597.html?thread=1022285