Pre-build /Post-build переменные в VisualStudio

Macro Description

$(ConfigurationName)

Имя текущей конфигурации проекта, например «Debug | Any CPU».

$(OutDir)

Путь к каталогу выходных файлов относительно каталога проекта. Это разрешает значение для свойства «Каталог вывода». Он включает обратную косую черту '\'.

$(DevEnvDir)

Каталог установки Visual Studio 2005 (определенный с помощью диска и пути); Включает обратную косую черту '\'.

$(PlatformName)

Название целевой платформы. Например, «AnyCPU».

$(ProjectDir)

Каталог проекта (определяемый с помощью диска и пути); Включает обратную косую черту '\'.

$(ProjectPath)

Абсолютный путь к проекту (определяется с помощью диска, пути, базового имени и расширения файла).

$(ProjectName)

Базовое имя проекта.

$(ProjectFileName)

Имя файла проекта (определяемое базовым именем и расширением файла).

$(ProjectExt)

Расширение файла проекта. Он включает '.' Перед расширением файла.

$(SolutionDir)

Каталог решения (определяемого с помощью диска и пути); Включает обратную косую черту '\'.

$(SolutionPath)

Абсолютный путь к решению (определяется приводом, путем, базовым именем и расширением файла).

$(SolutionName)

Базовое имя решения.

$(SolutionFileName)

Имя файла решения (определяемое базовым именем и расширением файла).

$(SolutionExt)

Расширение файла решения. Он включает '.' Перед расширением файла.

$(TargetDir)

Каталог основного выходного файла для сборки (определяется с помощью диска и пути). Он включает обратную косую черту '\'.

$(TargetPath)

Абсолютный путь к основному выходному файлу для сборки (определяется приводом, путем, базовым именем и расширением файла).

$(TargetName)

Базовое имя основного выходного файла для сборки.

$(TargetFileName)

Имя файла основного выходного файла для сборки (определяется как базовое имя и расширение файла).

$(TargetExt)

Расширение файла основного выходного файла для сборки. Он включает '.' Перед расширением файла.

 

$(RemoteMachine) Задайте значение свойства Remote Machine на странице свойств отладки. Дополнительные сведения см. в разделе Изменение параметров проекта для конфигурации отладки C или C++.
$(Configuration) Имя текущей конфигурации проекта (например, Debug).
$(Platform) Имя текущей платформы проекта (например, Win32).
$(ParentName) (Не рекомендуется.) Имя элемента, содержащего данный элемент проекта. Это будет имя родительской папки или имя проекта.
$(RootNameSpace) Пространство имен (при наличии), содержащее приложение.
$(IntDir) Путь к каталогу, заданному для промежуточных файлов. Если это относительный путь, промежуточные файлы передаются по этому пути, добавленному к каталогу проекта. Этот путь должен содержать косую черту в конце. Путь разрешается в значение для свойства Intermediate Directory. Не используйте $(OutDir) для определения этого свойства.
$(OutDir) Путь к каталогу выходных файлов. Если это относительный путь, выходные файлы передаются по этому пути, добавленному к каталогу проекта. Этот путь должен содержать косую черту в конце. Путь разрешается в значение для свойства Output Directory. Не используйте $(IntDir) для определения этого свойства.
$(DevEnvDir) Папка установки Visual Studio (определяется как диск + путь); включает обратную косую черту "\".
$(InputDir) (Не рекомендуется; перенесено.) Каталог входного файла (определяется как диск + путь); включает обратную косую черту "\". Если проект является входными данными, этот макрос эквивалентен $(ProjectDir).
$(InputPath) (Не рекомендуется; перенесено.) Абсолютный путь к входному файлу (определяется как диск + путь + базовое имя + расширение файла). Если проект является входными данными, этот макрос эквивалентен $(ProjectPath).
$(InputName) (Не рекомендуется; перенесено.) Базовое имя входного файла. Если проект является входными данными, этот макрос эквивалентен $(ProjectName).
$(InputFileName) (Не рекомендуется; перенесено.) Имя входного файла (определяется как базовое имя + расширение файла). Если проект является входными данными, этот макрос эквивалентен $(ProjectFileName).
$(InputExt) (Не рекомендуется; перенесено.) Расширение имени входного файла. Включает символ "." перед расширением файла. Если проект является входными данными, этот макрос эквивалентен $(ProjectExt).
$(ProjectDir) Каталог проекта (определяется как диск + путь); включает обратную косую черту "\".
$(ProjectPath) Абсолютный путь к проекту (определяется как диск + путь + базовое имя + расширение файла).
$(ProjectName) Базовое имя проекта.
$(ProjectFileName) Имя файла проекта (определяется как базовое имя + расширение файла).
$(ProjectExt) Расширение файла проекта. Включает символ "." перед расширением файла.
$(SolutionDir) Каталог решения (определяется как диск + путь); включает обратную косую черту "\".
$(SolutionPath) Абсолютный путь к решению (определяется как диск + путь + базовое имя + расширение файла).
$(SolutionName) Базовое имя решения.
$(SolutionFileName) Имя файла решения (определяется как базовое имя + расширение файла).
$(SolutionExt) Расширение файла решения. Включает символ "." перед расширением файла.
$(TargetDir) Каталог основного выходного файла для сборки (определяется как диск + путь); включает обратную косую черту "\".
$(TargetPath) Абсолютный путь к основному выходному файлу для сборки (определяется как диск + путь + базовое имя + расширение файла).
$(TargetName) Базовое имя основного выходного файла сборки.
$(TargetFileName) Имя основного выходного файла для сборки (определяется как базовое имя + расширение файла).
$(TargetExt) Расширение имени основного выходного файла сборки. Включает символ "." перед расширением файла.
$(VSInstallDir) Каталог, в котором установлено программное обеспечение Visual Studio.

Это свойство содержит версию целевой платформы Visual Studio, которая может отличаться от платформы Visual Studio компьютера. Например, при построении с помощью $(PlatformToolset) = v110 свойство $(VSInstallDir) содержит путь к установке Visual Studio 2012.
$(VCInstallDir) Каталог, в котором установлено программное обеспечение Visual C++.

Это свойство содержит версию целевой платформы Visual C++, которая может отличаться от платформы Visual Studio компьютера. Например, при построении с помощью $(PlatformToolset) = v90 свойство $(VCInstallDir) содержит путь к установке Visual C++ 2008.
$(FrameworkDir) Каталог, в котором установлена платформа .NET Framework.
$(FrameworkVersion) Версия платформы .NET Framework, используемая Visual Studio. В сочетании с $(FrameworkDir) — полный путь к версии .NET Framework, используемой Visual Studio.
$(FrameworkSDKDir) Каталог, в котором установлена платформа .NET Framework. Платформу .NET Framework можно установить в составе Visual Studio или отдельно.
$(WebDeployPath) Относительный путь от корня веб-развертывания до каталога выходных данных проекта. Возвращает значение такого же типа, что и аргумент RelativePath.
$(WebDeployRoot) Абсолютный путь к расположению <localhost>. Например, c:\inetpub\wwwroot.
$(SafeParentName) (Не рекомендуется.) Имя непосредственного родителя в допустимом формате. Например, форма является родителем RESX-файла.
$(SafeInputName) (Не рекомендуется.) Имя файла как допустимое имя класса (без расширения файла).
$(SafeRootNamespace) (Не рекомендуется.) Имя пространства имен, в которое мастера проекта будут добавлять код. Это пространство имен будет содержать только те символы, которые разрешены в допустимых идентификаторах C++.
$(FxCopDir) Путь к файлу fxcop.cmd. Файл fxcop.cmd устанавливается не со всеми выпусками Visual C++.

https://msdn.microsoft.com/en-us/library/42x5kfw4(v=vs.80).aspx

https://msdn.microsoft.com/ru-ru/library/c02as0cs.aspx

Определение: Ковариантность и Контравариантность

  • Ковариантность: позволяет использовать более конкретный тип, чем заданный изначально.

  • Контравариантность: позволяет использовать более универсальный тип, чем заданный изначально.

  • Инвариантность: позволяет использовать только заданный тип.

 

Generic Модификатор IN

Generic Модификатор Out

https://blogs.msdn.microsoft.com/charlie/2008/10/28/linq-farm-covariance-and-contravariance-in-c-4-0/

https://msdn.microsoft.com/en-us/library/sx2bwtw7.aspx

https://msdn.microsoft.com/en-us/library/d5x73970.aspx

https://msdn.microsoft.com/en-us/library/bb384067.aspx

Cover Ass Management

Проблема в том, что наши манагеры не дотягивают до этого уровне. У нас все больше практикуется Cover Your Ass тип разработки, когда все пытаются прикрыть задницу на случай того если ничего не получится. И это вместо того, чтобы учиться достигать целей валидными средствами.

Отсюда и овертаймы. Некоторым манагерам просто нужно отчитаться, что в "эти сложные времена мы проявили командный дух и вышли работать сверхурочно", даже если потом придется это все переделать, или даже если это была перестраховка...

не мог удрежатся, спасибо https://dev.by/users/vyt за это коментарий!

https://dev.by/lenta/main/5-x-8-60-i-chas-raboty-programmista

 

 

regular expressions (regex) - справочник

[abc]
Один символ: a, b или c
A single character of: a, b or c
[^abc] Любой символ, за исключением: a, b или c Any single character except: a, b or c
[a-z] Любой одиночный символ из диапазона a-z Any single character in the range a-z
[a-zA-Z] Любой символ в диапазоне a-z или A-Z Any single character in the range a-z or A-Z
^ Начало строки Start of string
$ Конец строки End of string
. Любой символ Any single character
\s Любой символ пробела Any whitespace character
\S Непробельного характера Any non-whitespace character
\d Любая цифра Any digit
\D Любой не-цифа Any non-digit
\w Любое слово, символ (буква, цифра, подчеркивание) Any word character (letter, number, underscore)
\W Любой не символ слова Any non-word character
\b Граница слова A word boundary
\B Инверсными границе слова Negated word boundary
(...) Захватить все закрытые Capture everything enclosed
(a|b) a или b a or b
a? Ноль или один из Zero or one of a
a* Нуль или больше Zero or more of a
a+ Один или несколько One or more of a
a{3} Ровно 3 из Exactly 3 of a
a{3,} 3 или более 3 or more of a
a{3,6} Между 3 и 6 Between 3 and 6 of a
(?:...)
Номера для группы захвата Non-capturing group
(?>...) Атомной группы (не отступать) Atomic group (does not backtrack)
(?|...) Дубликат подшаблоном группы. Duplicate subpattern group.
(?#...) комментировать Comment
(?'name'...) Именованные группы захвата Named capturing group
(?<name>...) Именованные группы захвата Named capturing group
(?P<name>...) Именованные группы захвата Named capturing group
(?JismxXU) Встроенные модификаторы Inline modifiers
(?(...)..|..) Условный (IF) заявление Conditional (IF) statement
(?R) Recurse всей картины Recurse the entire pattern
(?1) Recurse первый подшаблоном Recurse the first subpattern
(?=...) Положительный просмотр вперед Positive Lookahead
(?<=...) Положительный просмотр назад Positive Lookbehind
(?!...) Отрицательный просмотр вперед Negative Lookahead
(?<!...) Отрицательный просмотр назад Negative Lookbehind
(*...) Глаголы Verbs
\A Начало строки Start of string
\G Специальные якорь, полезные с / г Special anchor, useful with /g
\p{..} or \p.. Свойств символов Юникод Unicode character properties
\z Конец строки End of string
[abc]* 0 или более, В и С [жадный] 0 or more of a, b or c [greedy]
[abc]*+ 0 или более, В или С [притяжательные] 0 or more of a, b or c [possessive]
[abc]*? Ноль или более из A, B или C [ленивый] Zero or more of a, b or c [lazy]
\Q...\E Цитата; Рассматривать как литералы Quote; Treat as literals
[[:alnum:]] Posix стиле символ класса Posix style char class
     
     
     
flags: i: case insensitive m: make ^$ match start and end of line respectively s: make dot match newlines g: all matches
Флаги: i : без учета регистра m : сделайте ^ $ начала матча и в конце строки соответственно s : сделать перевод строки точка матч g : Все матчи

http://msdn.microsoft.com/ru-ru/library/az24scfc.aspx

http://regex101.com/

XNA прямая загрузка контента

В XNA (и в MonoGame) можно загружать контентна прямую

Texture2D  myTexture;
System.IO.Stream stream = TitleContainer.OpenStream("Content/picture.jpg");
myTexture = Texture2D.FromStream(GraphicsDevice, stream);

Prolific USB-to-Serial Com Port не работает на Windows

Не статья, а сплошной плагиат :) Пишу только для того, чтобы не потерять решение, найденное здесь. Спасибо товарищу с ником "San-ch".

Ситуация: есть адаптер USB-Com фирмы Prolific, спаянный скорее всего в Китае, VID_067B&PID_2303. Нужно прицепить его к Windows 7 (x32). Виндовский Update не помог. Cкачал новый драйвер с оф.сайта, v3.4.48.272. После его установки подключил шнурок и получил "Запуск этого устройства невозможен. (Код 10)". Копания в инете привели на тот самый форум. Оказалось, нужен старый драйвер, в котором еще нет проверки подлинности чипа. На форуме товарищ писал, что лечил так Win7x64, у меня на 32-разрядной тоже все получилось.

Скачать драйвер для PL2303, v.3.2.0.0, Win7.

Самое интересное, что прога определения чипа (шла в архиве с новым драйвером) после нормальной установки не ругается на чип и определяет его как "PL-2303 XA / HXA". Вот и кому, спрашивается, пиндосы в итоге хуже сделали? Нам.. :(

http://waredom.ru/118

Регистры в AVR

В AVR есть 3 типа регистров DDRx, PORTx и PINx - они  отвечают управление ногами микроконтроллера.
В AVR все ноги делятся на порты, которые обозначаются латинскими буквами A, B, C и т.д. Каждый регистр может содержать до восьми ног, которые номеруются цифрами от 0 до 7. В datasheet они обозначаются типа PA0, PB1 и т.п. Именно они указывают букву порта и номер ноги. Например, для управления портом "A" используются регистры DDRA, PORTA и PINA. Каждый из них размером в 1 байт, а каждый бит при этом отвечает за соответствующую ногу.


DDRx - регистры определяют направление данных - ввод или вывод. Значение "0" - ножка вход  если сделать бит - "1" эта ножка станет выходом.

PORTx - позволяют задать состояние ноги - логическая единица или логический ноль, а также включать подтягивающий резистор. Задавая битам этого регистра "1" или "0" мы получим то же значение и на ножках (если они в регистре DDRx отмечены как выходы).

PINx - рассчитаны только на чтение и позволяют определить уровень на ноге, когда она работает на ввод.

 

http://avrfuse.narod.ru/

Arduino C\C++ и Visual Studio

Arduino  - это очень интересно, но родная среда разработки не самая удобная. По этому вот как можно разрабатывать приложения для Arduino в Visual Studio и писать на C или С++.
Для этого надо пойти в Tools -> Extensions and Update и найти  в поиске arduino for visual studio (http://www.visualmicro.com/)

После инсталяции можно будет создавать проект для  Arduino. НО!
Это нормальный С++ проект, по этому можно писать на нормальном С/С++