25 окт. 2010 г.

Идиома владения в применении к объектам синхронизации

Интересный и оч удобный механизм работы с, в данном случае, критическими секциями. Реализация проста, а избавляет от большого количества головняка...
Идиома владения в применении к объектам синхронизации

22 окт. 2010 г.

http://www.manpower.ru/ua/accenture/index.php

Hi!

=======================
WBR, Rett Pop

C++ Перлы


switch(dwNotifyID)
{
case NOTIFYPARENT_BEGIN_INSTALL_OPERATIONS:
m_cProgressPage.SetPageText(SZ_INSTALL_HEADER_PROGRESS_PAGE_TEXT);
break;
}

return m_rInstall.NotifyParent(dwNotifyID, dwData);

Таблица преобразования CIDR. Маска сети.

Таблица преобразования CIDR. Маска сети.

21 окт. 2010 г.

Character GuideLine в Microsoft Visual Studio

В MS Visual Studio нет возможности в диалоговом режиме изменить положение так называемого Character Guidline - вертикальной полоски в окне редактора, очерчивающую визуальную границу ширины строки. ФЙункционально оно ничего не делает, просто показывает, где находится, например, 80-й символ.
Настройка этого параметра производится через правку системного Реестра. В ветке:
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\<версия MSVS>\Text Editor]

изменяется строковый ключ Guides, который принимает значение:
"RGB(128,0,0) n1,n2,n3..."
, где n1,n2,n3 - расстояния в символах от левого края окна для каждой из линий, соответствующих каждому n (их может быть до 13 штук), "128,0,0" - RGB-цвет линии.

Скрытые возможности С++

Гы. Или как это еще сейчас принято говорить в обществе - LOL. Скрытые возможности С++

О стратегиях выделения динамической памяти

Интересная заметка О стратегиях выделения динамической памяти. Интересен не только конкретный случай, а вообще тенденция.

13 окт. 2010 г.

Стиль кодирования

"Другими словами, чем больше информации о том, что делает код, расположено прямо перед вашими глазами, тем более эффективной будет работа по поиску ошибок." Joel Spolski. Как заставить неправильный код выглядеть неправильно.

7 окт. 2010 г.

Останов консольной программы по окончанию

Понравилось мне использовать

::system("pause");


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

6 окт. 2010 г.

Парочка макросов под Visual Studio 2008

Субж:
1. Выделяет активный документ в окне Solution Explorer:
 
Public Sub LocateFileInSolutionExplorer()
DTE.ExecuteCommand("View.TrackActivityinSolutionExplorer")
DTE.ExecuteCommand("View.TrackActivityinSolutionExplorer")
DTE.ExecuteCommand("View.SolutionExplorer")
End Sub


У студии есть настройка Tools/Options/Projects and Solutions/Track Active Item In Solution Explorer, которая позволяет автоматически выделяти активный документ в SE. Этот макрос пользует эту фичу - включил/выключил/активировал окно Solution Explorer.

2. Открывает связанный с активным файл. Если открыт C, CPP, CC, то открывается файл с тем же именем но заголовочным расширением H, HPP, HH, and vice verse.

Sub OpenCorrspFile()
Dim sSF, sSP As String
Dim sDF, sDP As String
Dim sSE, sDE As String

sSP = DTE.ActiveDocument.Path
sSF = DTE.ActiveDocument.Name
sSE = LCase(Right(sSF, Len(sSF) - InStrRev(sSF, ".")))
sSF = Left(sSF, InStrRev(sSF, ".") - 1)

If ((sSE = "h") Or (sSE = "hpp")) Then
If ("" <> Dir(sSP + sSF + ".c")) Then
DTE.ItemOperations.OpenFile(sSP + sSF + ".c")
End If

If ("" <> Dir(sSP + sSF + ".cc")) Then
DTE.ItemOperations.OpenFile(sSP + sSF + ".cc")
End If

If ("" <> Dir(sSP + sSF + ".cpp")) Then
DTE.ItemOperations.OpenFile(sSP + sSF + ".cpp")
End If
End If

'======================================================
If ((sSE = "c") Or (sSE = "cpp") Or (sSE = "cc")) Then
If ("" <> Dir(sSP + sSF + ".h")) Then
DTE.ItemOperations.OpenFile(sSP + sSF + ".h")
End If

If ("" <> Dir(sSP + sSF + ".hpp")) Then
DTE.ItemOperations.OpenFile(sSP + sSF + ".hpp")
End If

If ("" <> Dir(sSP + sSF + ".hh")) Then
DTE.ItemOperations.OpenFile(sSP + sSF + ".hh")
End If
End If

End Sub


3. Форматирует в активном файле блоки if( ... ), обрамляя одним пробелом тело условия:

Sub FormatIF()
DTE.Find.FindWhat = "{:b*}if{:b*}:Ps{:b*}{.*}>{:b*}:Pe{:b*}$"
DTE.Find.ReplaceWith = "\1if( \4 )"
DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument
DTE.Find.MatchCase = False
DTE.Find.MatchWholeWord = False
DTE.Find.MatchInHiddenText = False
DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxRegExpr
DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone
DTE.Find.Action = vsFindAction.vsFindActionReplaceAll
DTE.Find.Execute()
End Sub

5 окт. 2010 г.

Наладонник Asus MyPal p526. Грязный хак.

Второй год пользую так называемый PC-Phone Asus MyPal p526. В общем и целом - нормально.
Но есть у него фича, которая сильно меня доставала. У него на правой контекстной кнопке по-умолчанию висит вызов Voice Commander. Утилиты, как по мне, совершенно бесполезной. Тем паче, учитывая ее тормознутость.
Должно было пройти 2 года, чтобы я додумался найти в директории Windows устройства ярлык Voice Commander.lnk, удалить его и заместить ярлыком с тем же именем, но на, в моем случае, калькулятор. Хак грязный, но вынужденный. Ибо штатной возможности переназначить эту кнопку я не нашел.

4 окт. 2010 г.

Adobe Open Source

Хмм. Никогда не думал, что Adobe будет двигаться в направлении Open Source. Ан нет. Набрел на ресурс Adobe Open Source. Фотошопом они, конечно, делиться не будут, но и открытие исходников нескольких проектов, имхо, тоже показатель...