Makecert

Эта утилита нужна для создания сертификатов, например их можно использовать как тестовые для проверки работы SSL. Нужно запустить Developer Command Prompt (идет в комплекте с Visual Studio).


Пример:


Makecert –r –pe –n CN="www.example.com" –b 05/10/2010 –e 12/22/2011 –eku 1.3.6.1.5.5.7.3.1 –ss my –sr localmachine -sky exchange –sp "Microsoft RSA SChannel Cryptographic Provider" –sy 12 MyCertForExampleCom.cer

Эта команда создает само заверяющий сертификат, который может использоваться для тестирования веб-приложения, которое использует протокол SSL (Secure Sockets Layer) на веб-сервере, URL-адрес которого является www.example.com. OID, определяемый параметром –eku, идентифицирует этот сертификат как сертификат сервера SSL. Сертификат хранится в хранилище my и доступен на уровне компьютера (а не пользователя). Закрытый ключ сертификата можно экспортировать, сертификат действителен с 01.01.2013 до 01.01.2015 года и называется MyCertForExampleCom.cer.

Создаем сертификат

makecert -r -pe -n "CN=My Root Authority" -ss CA -sr CurrentUser   -a sha1 -sky signature -cy authority -sv CA.pvk CA.cer


Создаем серверный сертификат с экспортируемый закрытый ключ

makecert -pe -n "CN=my.server" -a sha1 -sky Exchange -eku 1.3.6.1.5.5.7.3.1 -ic CA.cer -iv CA.pvk -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -sv server.pvk server.cer
pvk2pfx -pvk server.pvk -spc server.cer -pfx server.pfx

pvk2pfx по умолчанию не задает пароль к  PFX выходе.  Вы должны использовать -po параметр для указания пароля.

Затем вы можете использовать. PFX файл на сервере приложения (или установить его в IIS
Для того чтобы клиенты могли доверять вашему сертификату нужно на них установить сертификат CA.cer (немного выше)

certutil -user -addstore Root CA.cer

чтобы програмно установить сертификат в IIS нужно сделать следующее:

// Предположим, “Site”  уже установлен на вашем сайте через что-то вроде
// Site site = mgr.Sites.Add(siteName, directory, 443);
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);
// \bin\certificate.pfx, где находиться файл сертификата.
// 1234 является паролем к CertFile (экспортируемых из IIS)
X509Certificate2 certificate = new X509Certificate2(directory + @"\bin\certificate.pfx", "1234");
store.Add(certificate);
var binding = site.Bindings.Add("*:443:", certificate.GetCertHash(), store.Name);
binding.Protocol = "https";
store.Close();


Скачать MakeCert: http://download.microsoft.com/download/platformsdk/update/5.131.3617.0/nt45xp/en-us/makecert.exe
Ссылки:
http://msdn.microsoft.com/ru-ru/library/bfsktky3.aspx
http://stackoverflow.com/questions/496658/using-makecert-for-development-ssl
http://stackoverflow.com/questions/4498291/programatically-import-cert-into-iis
http://stackoverflow.com/questions/3770233/is-it-possible-to-programmatically-generate-an-x509-certificate-using-only-c

Unable to activate windows store app

Иногда может возникнуть проблема при заупске приложение Windows Store App типа "Unable to activate windows store app"

Для того чтобы починить нужно удалить содержимое папки bin и перекомпилировать приложение

Настройка локализации KendoUI

По умолчанию валидаторы настроены на американский формат. Чтобы локализировать компоненты под вашу локацию нужно добавить ссылку на js файлы с необходимыми ресурсами:

@{
var culture = System.Threading.Thread.CurrentThread.CurrentCulture.ToString();
}
<script src="@Url.Content("~/Scripts/kendo/{KENDOVERSION}/cultures/kendo.culture." + culture + ".min.js")"></script>
<script>
kendo.culture("@culture");
var culture = kendo.culture();
</script>

TFS Azure – SDK по умолчанию

Сразу мы имеем доступ к SDK:


• Windows Server 2008 R2 (64-bit environment)
• Team Foundation Build (Team Foundation Server 2012)
• Visual Studio
  Visual Studio 2012 Ultimate RTM
  Visual Studio SDK 2012 RTM
  Visual Studio 2010 SP1
• The .NET Framework
  .NET 4.5
  .NET 3.5 SP1
• Windows Azure
  SDK 1.8
  SDK 1.7
  SDK 1.6
  Integration Components 1.6
• Other components
  SharePoint 2010
  SQL Server Data Tools for Visual Studio 2010 and Visual Studio 2012
  TFS 2012_BuildExtensions.msi (for Java)
  TypeScript for Visual Studio 2012
  Web Deploy 3.0
  Windows Phone SDK 8.0

 

Подробнее, а так же про настройку дополнительных компонентов

https://tfs.visualstudio.com/en-us/learn/build/hosted-build-controller-in-vs/

Lambda выражения в С++

В С++ с лямбдами достаточно все просто.
Конструкция примерно такая:  [ ] ( params ) {  body  };

 1. Создание функции:

auto f1 =[](int x) {return x*2;};
function<int (int, int)>f2 = [] (int x, int y) { return x + y; };

В пером случае возвращаемый тип будет присвоен автоматически.
Во втором случае мы сами указываем возвращаемый тип.

2. Доступ к локальным переменным:

int i = 3; //переменные к которым нужен доступ
int j = 5; //переменные к которым нужен доступ
function<int (void)> f4 = [i, &j] { return i + j; };

 в квадратных скобках мы передаем локальные переменные с которыми нужно работать в функции. Если вы используете это в вашем классе то для доступа можно использовать this в квадратных скобках = [this] – но это не допустим для статических функций.

 3. Неименованная функция:

int n = [] (int x, int y) { return x + y; }(5, 5);

 параметры для вызова передаться в круглых скобках в конце выражения.

Код:

#include "stdafx.h"
#include <iostream>
#include <functional>
#include <string>
#include <algorithm>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Lambda Test\n";
// пример 1 - лямбда
auto f1 =[](int x) {return x*2;};
// пример 2 - лямбда
function<int (int, int)> f2 = [] (int x, int y) { return x + y; };
// пример 3 - лямбда
auto f3 =[](int x, int y) {return x*2*y;};
// пример 4 - лямбда
int i = 3; //переменные к которым нужен доступ
int j = 5; //переменные к которым нужен доступ
function<int (void)> f4 = [i, &j] { return i + j; };
// пример 5 - лямбда
int n = [] (int x, int y) { return x + y; }(5, 5);
// вызов примера 1 
int t1 = f1(5);
// вызов примера 2 
int t2 = f2(5,5);
// вызов примера 3 
int t3 = f3(5,5); 
// вызов примера 4 
int t4 = f4(); 
cout << t1 << "\n";
cout << t2 << "\n";
cout << t3 << "\n";
cout << t4 << "\n";
cout << n << "\n";
string str; 
getline(cin,str);
return 0;
}

 MSDN: http://msdn.microsoft.com/en-us/library/vstudio/dd293599.aspx

Регистрация COM объекта

1. Найдите папку, в которой находится файл COM-приложения и запомните путь к нему.
2. Нажмите Пуск -> Выполнить -> CMD.
3. Выполните команду regsvr32 <путь>, где <путь> — это путь к файлу

Например regsvr32 d:\someFolder\some.dll

Локализация Windows 8 и Windows Phone приложений с помощью Multilingual App Toolkit

Перед началом нужно выключить Multilingual App Toolkit    для проекта. Для этого нужно выделить проект зайти в меню Tool и выбрать там Enable Multilingual App Toolkit. 

Для простой локализации достаточно сделать следующее:
1. Создать папку Resources.
2. В ней создать папки с культурами для которых есть локализация например: en-US(Для  Multilingual App Toolkit   обязательно должен быть en-US именно его он и переводит на другие языки).
3. В папке с культурой создать файл с ресурсами ( .resw ) например loc.resw.
4. Использовать в коде, указав в скобках нужный ресурс ( например у вас локализация разбита на несколько файлов)

var loader = new Windows.ApplicationModel.Resources.ResourceLoader("loc");
tbx.Text += loader.GetString("test");

Если имя файла ресуров Resources.resw
То его имя можно не указывать:

var loader = new Windows.ApplicationModel.Resources.ResourceLoader();
tbx.Text += loader.GetString("test");

 Для XAML нужно использовать UID

<TextBlock x:Uid="Greeting" Text="" />

А в файле ресурсов имя должно быть Greeting.Text

Фишка Multilingual App Toolkit  в том что он позволяет переводить ваши уже созданные ресурсы на разные языки.
Теперь подробнее как это сделать:
1. Установить Multilingual App Toolkit  (ссылка ниже)
2. Зайти в Tools и выбрать Enable Multilingual App Toolkit 
3. Нажать правой кнопкой на проекте и выбрать Add Translation Language
4. Выбрать нужные языки.
5. У вас появиться файлы в папке MultilingualResources
6. Сделать ребил проекта.
7. Когда вы попытаетесь открыть файлы .xlf то увидете там строки из ваших ресурсов.
8. Теперь нужно перевести эти строки, можно отправить переводчику, все это есть в MSDN ссылке.
9. Нажать сохранить в редакторе.

Дальше все работает само. Важный момент английский язык все таки берётся из вашего оригинального файла локализации.

 А для задания языка можно сделать так:

Windows.Globalization.ApplicationPreferences.PreferredLanguage = "en";
this.Frame.Navigate(this.GetType());

Текущий язык можно получить из CultureInfo.

также еще можно сделать так:

public static String appForceCulture = "qps-PLOC"; 
// тут должна быть локаль (например ru-RU)
Thread.CurrentThread.CurrentCulture = 
new CultureInfo(appForceCulture);

 

 

 MSDN:

 http://blogs.msdn.com/b/developer-tools-rus/archive/2012/11/21/visual-studio-2012-windows.aspx

 http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh965329.aspx

 http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh965323.aspx

 

Далее: http://msdn.microsoft.com/en-us/library/windows/apps/jj569303.aspx

Если у вас не стоит Multilingual App Toolkit for Visual Studio 2012 то его можно скачать отсюда:

http://msdn.microsoft.com/en-us/windows/apps/hh848309

 

еще:

http://blogs.windows.com/windows_phone......-apps-part1.aspx

http://blogs.windows.com/windows_phone/b/wpdev/archive.....-phone-apps-part-2.aspx

Как скомпилировать wxWidgets для Windows и Visual Studio 2012

Как бы вы не получили исходные коды wxWidgets их нужно скомпилировать для использования.

Для того нужно сделать следующее:
1. Найти и запустить консоль Developer Command Prompt for VS2012.
2. Перейти в ней в папку с распакованным wxWidgets, в папку build, а затем в папку msw. (например D:\wxWidgets\build\msw)
3. Для Debug версии выполнить:
4. nmake /f makefile.vc target_cpu=i386 build=debug unicode=1
5. Для Release версии выполнить:
6. nmake /f makefile.vc target_cpu=i386 build=release unicode=1 cppflag="/Ox /Os"
Если у вас x64 версия то для нее тоже нужно компилировать, для этого нужно найти и запустить 64 битную консоль которая называется - Open VS2012 x64 Native Tools Command Prompt.
И сделать тоже самое, для debug и release.
После того когда все скомпилируется, для проверки можно запустить проект из папки wxWidgets\samples\minimal.
Если проект скомпилироваться то все хорошо. Можно работать.
Кстати, чтобы вашему приложению небыли нужны установленные VS Redistributable перед компиляцией в файле config.vc который находиться в папке build\msw нужно найти параметр
RUNTIME_LIBS = dynamic
И заменить dynamic на static

Отладочная информация в Windows Phone (Frame rate counter)

При разработке приложений для Windows Phone мы заметили, что при отладке с права появляться некие счетчики.
Например:

Frame Rate Counters with Labels

 

Обозначения:
Composition thread frames per second – количество кадров в секунду обновления экрана (FPS).
User interface thread frames per second – количество кадров в секунду с которой работает основной поток пользовательского интерфейса.
Texture memory usage – сколько памяти используют текстуры которые есть в вашем приложении.
Surface counter – Число поверхностей которые передаться в графический процессор для обротки.
Intermediate surface counter – количество промежуточных текстуры, созданные для композитинга.
Screen fill rate counter – представляет количество полных экранов которые перерисовал телефон за каждый кадр.
Программное включение или отключение счетчика:

Application.Current.Host.Settings.EnableFrameRateCounter = true;

или

Application.Current.Host.Settings.EnableFrameRateCounter = false;

Примерные значения счетчиков:
Счетчик                                                                Хорошее    Лучшее
Composition thread frames per second             30               60  
User interface thread frames per second           15            >15 
Screen fill rate counter                                          1.0         <=2.0

Больше информации: http://msdn.microsoft.com/en-us/library/windowsphone/develop/gg588380(v=vs.105).aspx

Как настроить Azure Cache


Для использования кеша есть 2 способа:
1. Выделить какой-то процент памяти из существующих инстанcов вашего приложения для кэша.
2. Создать Worker Role память которой будет использоваться для кэша.
В обоих случаях кэш включается в настройках Cloud проект в Visual Studio.
В первом случае вы вделаете проценты – это опция “Co-located Role”, а во втором в параметрах Cache Role – Dedicated Role.
Если у вас отдельная Cache Worker Role то она должна находиться в том же Cloud проекта что и проект который будет использовать кэш.

Также есть настройки кэша, которые касаться времени жизни.
1. None  - вы сами управляете временем жизни кэша.
2. Absolute – кэш существует указано кол-во минут. После того как время выйдет кэш удалиться.
3. Sliding Window – после обращение к кэшу время счетчик времени сбрасывается. В общем кэш живет указанное кол-во времени, если не было доступа к нему. Если доступ был то счетчик сбрасывается и отсчет начинается заново.


Настройка проекта:
1. Добавить Cache Worker Role, или выделить кэш из инстанов.
2. Добавить в проект в котором будет использоваться кэш через NuGet – Windows Azure Caсhe. Судя по документации достаточно одного инстанса. В общем у вас должны появиться следующие библиотеки:
    a. Microsoft.ApplicationServer.Caching.Client.dll
    b. Microsoft.ApplicationServer.Caching.Core.dll
    c. Microsoft.WindowsFabric.Common.dll
    d. Microsoft.WindowsFabric.Data.Common.dll
    e. Microsoft.ApplicationServer.Caching.AzureCommon.dll
    f. Microsoft.ApplicationServer.Caching.AzureClientHelper.dll

3. Прописать в Web.Config ( хотя скорее всего все пропишется автоматически).

В начале файла:

<configSections>
<section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
<section name="cacheDiagnostics" type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon" allowLocation="true" allowDefinition="Everywhere" />
</configSections/>

 

И где-то в конце:

<dataCacheClients>  
<dataCacheClient name="default">    
<autoDiscover isEnabled="true" identifier="[cache cluster role name]" />    
<!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->  
</dataCacheClient></dataCacheClients><cacheDiagnostics>  
<crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
</cacheDiagnostics>

Где [cache cluster role name] – это имя Cache Worker Role.

Или раскомментировать сроку для использования Co-located cache.

Использование:
Создаем объект с кэшем:

DataCacheFactory cacheFactory = new DataCacheFactory();
DataCache cache = cacheFactory.GetDefaultCache();

И работаем с ним:

cache.Put("item", "value");
cache.Add("item", "value");
object result = cache.Get("Item");

 

Ссылка: http://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/#add-object

 

Как удалить проект из Team Foundation Service (TFS Service)

Чтобы удалить проект из сервиса TFS нужно вызвать командную строку Developer Command Prompt (ищите в программах, появляется вместе с установленной Visual Studio)

И выполнить команду :

TFSDeleteProject /force /collection:https://YOUR_NAME.visualstudio.com/DefaultCollection PROJECT_NAME

После этого произойдёт удаление проекта.

 

Еще хороший способ, через web панель описан тут http://stackoverflow.com/a/19430842

P.S.

 Если в имени проекта есть пробелы, то заключите имя в двойные кавычки, например - "Project Name"

Отладка WCF сервисов

Если ваш WCF сервис не работает, и вы мне можете запустить его из отладчика Visual Studio, а в ошибке клиента приходит что-то типа «включите includeExceptionDetailInFaults»
Тогда нужно вклчить его, указав параметр includeExceptionDetailInFaults="true". Для этого в web.config сервера нужно найти секцию behaviors -> serviceBehaviors и включить там эту опцию:

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

Вот примерно так как указано в примере, в первом случае у меня includeExceptionDetailInFaults выключена, а во втором включена. После этого в отладчике клиента вы получите информацию об ошибке.