Храним 300 миллионов объектов в CLR процессе


Камень преткновения — GC

Все managed языки такие как Java или C# имеют один существенный недостаток — безусловное автоматическое управление паматью. Казалось бы, именно это и является преимуществом managed языков. Помните, как мы барахтались с dandling-указателями, не понимая, куда утекают драгоценные 10KB в час, заставляя рестартать наш любимый сервер раз в сутки? Конечно, Java и C# (и иже с ними) на первый взгляд разруливают ситуацию в 99% случаев.

Так-то оно так, только вот есть одна проблемка: как быть с большим кол-вом объектов, ведь в том же .Net никакой магии нет. CLR должен сканировать огромный set объектов и их взаимных ссылок. Это проблема частично решается путём введения поколений. Исходя из того, что большинство объектов живёт недолго, мы высвобождаем их быстрее и поэтому не надо каждый раз ходить по всем объектам хипа.

Но проблема всё равно есть в тех случаях, когда объекты должны жить долго. Например, кэш. В нём должны находиться миллионы объектов. Особенно, учитывая возрастание объемов оперативки на типичном современном серваке. Получается, что в кэше потенциально можно хранить сотни миллионов бизнес-объектов (например, Person с дюжиной полей) на машине с 64GB памяти.

Однако на практике это сделать не удаётся. Как только мы добавляем первые 10 миллионов объектов и они “устаревают” из первого поколения во второе, то очередной полный GC-scan “завешивает” процесс на 8-12 секунд, причём эта пауза неизбежна, т.е. мы уже находимся в режиме background server GC и это только время “stop-the-world”. Это приводит к тому, что серверная апликуха просто “умирает” на 10 секунд. Более того, предсказать момент “клинической смерти” практически невозможно.
Что же делать? Не хранить много объектов долго?

Зачем

Но мне НУЖНО хранить очень много объектов долго в конкретной задаче. Вот например, я храню network из 200 миллионов улиц и их взаимосвязей. После загрузки из flat файла моё приложение должно просчитать коэффициенты вероятностей. Это занимает время. Поэтому я это делаю сразу по мере загрузки данных с диска в память. После этого мне нужно иметь object-graph, который уже прекалькулирован и готов “к труду и обороне”. Короче, мне нужно хранить резидентно около 48GB данных в течении нескольких недель при этом отвечаю на сотни запросов в секунду.

Вот другая задача. Кэширование социальных данных, которых скапливаются сотни миллионов за 2-3 недели, а обслуживать необходимо десятки тысяч read-запросов в секунду.

Как

Вот мы и решили сделать свой memory manager и назвали его “Pile” (куча). Ибо никак не обойти “калечность” managed memory model. Unmanaged memory ничем не спасает. Доступ к ней занимает время на проверки, которые “убивают” скорость и усложняют весь дизайн. Ни .Net, ни Java не умееют работать в “нормальном” режиме с кусками памяти, которые не на хипе.

Что мы сделали? Наш memory manager — это абсолютно 100% managed код. Мы динамически выделяем массивы byte, которые мы называем сегментами. Внутри сегмента у нас есть указатель — обычный int. И вот мы получаем PilePointer:

/// <summary> /// Represents a pointer to the pile object (object stored in a pile). /// The reference may be local or distributed in which case the NodeID is>=0. /// Distributed pointers are very useful for organizing piles of objects distributed among many servers, for example ///  for "Big Memory" implementations or large neural networks where nodes may inter-connect between servers. /// The CLR reference to the IPile is not a part of this struct for performance and practicality reasons, as ///  it is highly unlikely that there are going to be more than one instance of a pile in a process, however ///  should more than 1 pile be allocated than this pointer would need to be wrapped in some other structure along ///   with source IPile reference /// </summary>  public struct PilePointer : IEquatable<PilePointer>  {     /// <summary>     /// Distributed Node ID. The local pile sets this to -1 rendering this pointer as !DistributedValid     /// </summary>     public readonly int NodeID;      /// <summary>     /// Segment # within pile     /// </summary>     public readonly int Segment;      /// <summary>     /// Address within the segment     /// </summary>     public readonly int Address; ………………………………………………………………… }  

Обратите внимание на NodeID, о нём ниже. Получить PilePointer можно следующим образом:

var obj = new MyBusinessType(); var pilePointer = Pile.Put(obj); ………………………………………… // где-то в другом месте, где есть поинтер var originalObj = Pile.Get(pilePointer);  

Мы получим копию оригинального объекта, который мы погрузили в Pile с помощью Put(), либо PileAccessViolation, если pointer неправильный.

Pile.Delete(pilePointer)  

позволяет высвободить кусок памяти, соответственно, попытка прочитать эту память опять вызовет PileAccessViolation.

Вопрос: как это сделано и что мы храним в byte[], ведь мы не можем хранить объекты CLR с реальными поинтерами, тогда они запутывают GC. Нам как раз надо обратное — хранить что-то в нашем формате, убрав managed references. Таким образом, мы сможем хранить данные, а GC не будет знать, что это объекты, ну и не будет их визитировать. Это возможно сделать через сериализацию. Конечно, имеются в виду не встроенные сериализаторы .Net (такие как BinaryFormatter), а наши родные в NFX.

PilePointer.NodeID позволяет “размазывать” данные по распределённым “кучам”, так как он идентифицирует узел в когорте distributed pile.

А теперь главный вопрос. Зачем это всё надо, если “под капотом” используется сериализация и это медленно?

Скорость

Реально это работает так: объект < 300 байт, погруженный в byte[] с помошью NFX Slim сериализации, занимает в среднем меньше на 10-25% места чем native объект CLR в памяти. Для больших объектов эта разница стремится к нулю. Почему так получается? Дело в том, что NFX.Serialization.Slim.SlimSerializer использует UTF8 для строк и variable length integer encoding + не нужен 12+ байт CLR header. В итоге камнем преткновения становится скорость сериализатора. SlimSerializer “держит” феноменальную скорость. На одном ядре Intel I7 Sandy Bridge с частотой 3GHz мы превращаем 440 тысяч PilePointer’ов в объект в секунду. Каждый объект в этом тесте имеет 20 заполненных полей и занимает 208 байт памяти. Вставка объектов в Pile одним ядром 405 тысяч в секунду. Такая скорость достигается за счёт динамической компиляции expression trees для каждого сериализируемого объекта в pile-сегмент. В среднем SlimSerializer работает раз в 5 быстрее, чем BinaryFormatter, хотя для многих простых типов это разница коэффициент достигает 10. С точки зрения спэйса SlimSerializer пакует данные в 1/4 — 1/10 того, что делает BinaryFormatter. Ну и самое главное. SlimSerializer НЕ ТРЕБУЕТ специальной разметки полей в объектах, с которыми мы работаем. Т.е. хранить можно всё, что угодно, кроме delegates.

Многопоточный тест на вставку данных стабильно держит больше 1 миллиона транзакций в секунду на CoreI7 3GHz.
Ну и теперь самое главное. Аллокировав 300.000.000 объектов в нашем процессе полный GC занимает менее 30 миллисекунд

Итоги

Технология NFX.ApplicationModel.Pile позволяет избежать непредсказуемых задержек, вызванных сборщиком мусора GC, держа сотни миллионов объектов резидентно в памяти в течении длительного времени (недели), обеспечивая скорость доступа выше, чем “out-of-process” решения (такие как MemCache, Redis et.al).

Pile основан на специализированном memory manager’е, который аллокирует большие byte[] и распределяет память для приложения. Погруженный в Pile объект идентифицируется структурой PilePointer, ктр. занимает 12 байт, что способствует созданию эффективных object graphs, где объекты взаимно ссылаются.

Get the code:

NFX GitHub

ссылка на оригинал статьи http://habrahabr.ru/post/257091/

Карты Google теперь можно переключать в облегчённый режим работы

image В Google Maps появился специальный режим Lite Mode, в котором карты загружаются быстрее и отсутствуют некоторые тяжеловесные функции. В этом режиме отключены трёхмерные карты и загрузка спутниковых снимков, нельзя измерять расстояния и координаты, карты не будут пытаться использовать геолокационные функции. Также отключена интеграция с MyMaps. Чтобы перейти в облегчённую версию карт, можно воспользоваться этой ссылкой. О том, что включена облегчённая версия Google maps можно будет судить по значку молнии, который будет располагаться в нижнем правом углу рядом со значком режима Street View.

В упрощённом режиме слегка изменён интерфейс карты — слева появилась навигационная панель, подобная той, которая существует в мобильном приложении Google Maps. Всё еще доступна и старая версия карт, которую можно найти по этой ссылке. Google предупреждает, что скоро она будет закрыта.
image
О том, что готовится облегчённый режим Google Maps, который должен прийти на смену Classic Mode, сообщила на форуме для пользователей карт Эбби ДеБеллис (там же можно прочитать и многочисленные просьбы не закрывать старую версию карт; некоторые из пользователей распространяют петицию для Ларри Пейджа, доступную на change.org ). Она сообщила, что в lite-режим карты будут переходить в случае медленного интернет-соединения, что актуально для пользователей мобильной связи.

В начале апреля важные изменения произошли в Яндекс Картах: карты стали занимать весь экран и появились карточки объектов, откуда можно посмотреть на Панорамы и проложить маршрут. Кроме того, была выполнена интеграция с Народной картой (аналогом OpenSteetMap и Викимапии), которая стала редактором карт.

ссылка на оригинал статьи http://geektimes.ru/post/249842/

Всё больше студентов в США специализируются на изучении БПЛА

image

В США всё большей популярностью пользуется получение степени бакалавра по специальности «управление БПЛА». Эта тенденция совпадает с растущим интересом к беспилотникам, и подпитывается благодаря финансированию от некоторых штатов.

Штат Канзас печально известен своими тяжёлыми погодными условиями, ураганами и торнадо. После особенно разрушительного стихийного бедствия в 2007 году власти приняли решение вкладывать деньги в студенческие программы по изучению беспилотных летательных аппаратов (их избегают называть «дронами» — словом, которое ассоциируется с военными БПЛА).

В последние годы коммерческое использование коптеров переживает бум. Отслеживание состояния окружающей среды, снятие фильмов, фотография, и даже попытки доставок товаров. «Беспилотники сейчас – это как Дикий Запад в авиации,- говорит Джон Роббинс, ассистент-профессор подразделения по аэронавтике института Эмбри-Риддл. – Это новейшая область, и мы уверены, что эти летательные аппараты станут частью будущего авиации».

Большинство программ начинает изучение БПЛА с правил полётов, основ работы систем и электроники устройств, датчиков, аэродинамики, инструментов, необходимых для управления и т.д. Это сочетается с практическими занятиями — постройкой коптеров из наборов деталей, полётами в закрытых помещениях, и затем полётами на открытом воздухе.

Эти программы особенно популярны в штатах Канзас, Северная Дакота и Флорида. «У нас плотность населения довольно низкая – мы не запускаем свои аппараты над Нью-Йорком или Вашингтоном,- рассказывает Бен Трапнел, доцент аэронавтики университета Северной Дакоты. – Для обучения у нас есть идеальная комбинация места, времени и людей».

ссылка на оригинал статьи http://geektimes.ru/post/249838/

Искать, найти и не сдуваться

Друзья, хотим рассказать вам про наш сервис ШДМка.рф и некоторые детали его изготовления. Под катом статья про воздушные шары, CouchDB, Lisp и пара картинок.
КДПВ
На носу праздники и, быть может, кто-то из вас найдет себе идею для подарка.

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

Сегодня из воздушных шаров делается неимоверное количество красивых штук. Проводятся фестивали и просто интересные мероприятия.

Мы сделали сайт-каталог аэродизайнеров (а постепенно оформителей стали называться именно так), причем главное на сайте — это фотографии работ аэродизайнеров. От других сайтов-каталогов мы отличаемся наличием блокнота, который простой пользователь наполняет и отправляет дизайнеру в своем городе/регионе. Дизайнер, впрочем, тоже может отправить клиенту письмо с наполненным блокнотом.

Расскажу о технической составляющей сайта, поскольку в процессе разработки было найдено несколько интересных вещей, или слабо описанных в документации, или это описание приходилось собирать по крупицам на форумах.

Lisp

Сайт написан на языке Common Lisp (в реализации SBCL). Выбор языка обусловлен удобством кодирования и большим количеством библиотек. Под свои нужды были подправлены всего две библиотеки, причем весьма незначительно, остальное заработало «из коробки».

Код сайта компилируется сразу в машинный код, соответственно производительность сайта получается высокой. Хочется верить, что это утверждение выдержит проверку хабраэффектом 🙂

CouchDB

В качестве хранилища данных используется CouchDB. В ней хранятся фотографии и миниатюры к ним, а также информация о пользователях.

CouchDB включает в себя довольно удобную среду управления данными Futon, у которой есть один недостаток — весь код на JS, который используется для управления БД (views, list functions и т.д.), сериализуется в строку и его практически невозможно править в самой среде.

Для решения этой проблемы используется утилита couchapp.

CouchApp

Это небольшая утилита на python, которая позволяет создавать самостоятельные (standalone) приложения на CouchDB. Утилита по шаблону генерирует код приложения и, что самое важное, позволяет одной командой производить загрузку приложения в CouchDB. При этом само приложение имеет в файловой системе древовидную структуру, где в разных папках лежит код разных элементов, например представлений или вспомогательный код. В нормальном для человека виде.

Кроме того, утилита позволяет по мере разработки добавлять разные элементы couchapp-приложения — представления, списки и т.д.

Например так:

couchapp generate view check-user 

Здесь check-user — это название сгенерированного представления. Утилита создает каталог views/check-user, в котором будут шаблоны для map- и reduce-функций.

Update-функции

Поскольку в CouchDB данные никогда не перезаписываются, а только добавляются в БД, очень важным элементом работы является наличие ревизии документа. Почти любое обращение к документу на запись требует знание ревизии документа. Это не всегда удобно.

В CouchDB есть функции обновления (update functions), которые позволяют манипулировать документами на стороне сервера (не сгружая их на клиента), не зная их ревизию. В документации этот момент описан как-то довольно скромно, вместе с тем, функции обновления позволяют делать интересные вещи:

function(doc, req) {   if (!doc) {     doc = {       _id: req.id,       type: 'idGenerator',       count: 0     };   }   doc.count++;   return [doc, '"' + doc.count + '"']; } 

Приведенный фрагмент кода на каждый вызов фукнции увеличивается поле count документа. Таким образом реализован генератор последовательных номеров на CouchDB.
Вызов функции, к слову, производится следующим образом:

curl -X POST http://localhost:5984/database/_design/view-doc/_update/generateOrderNo/counterDoc 

Здесь view-doc — это design document в БД database, generateOrderNo — update function, counterDoc — документ в БД database.

Вызывая приведенную функцию мы каждый раз инкрементируем поле в документе и сразу же получаем значение этого номера. Аналог поля с автоинкрементом для SQL.

CouchApp, правда, не умеет генерировать update functions, однако, если вручную создать каталог updates и поместить в него функцию указанного выше содержания, то приложение спокойно загружается в CouchDB.

Подстановка кода

В CouchDB нет возможности в функциях представлений использовать какой-бы то ни было библиотечный код. Эту проблему CouchApp решает весьма, на мой взгляд, элегантно.

Можно указать в коде map-функции (или reduce-функции) конструкцию

function (doc) { ... // !code vendor/myapp/common.js ... } 

и в то место в коде, где эта строка встречается, будет вставлено содержимое файла common.js, расположенного в соответствующей папке приложения. Пусть и не самое красивое решение, но оно позволяет общий код писать один раз.

Фреймворк

В качестве основы для интерфейса был выбран фреймворк Ink. Он имеет интересную внутреннюю структуру и развитый функционал. Кроме того, фреймворк довольно быстро развивается.

Заключение

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

Ну а аэродизайнеров, которые могут устроить этот праздник, можно найти на нашем сайте. На главной есть ссылка на страницу с дизайнерами из вашего региона. Если окажется, что там никого нет, можете нажать кнопочку «Хочу, чтобы были!» и мы будем приглашать аэродизайнеров из ваших городов ссылаясь на вашу заинтересованность.

На картинке для привлечения внимания маскот FreeBSD, выполненный из воздушных шаров, логотип CouchDB и один из логотипов Lisp, выполненный на кофе.

Напоследок несколько ссылок предпраздничного характера:

Маскот FreeBSD из шаров
Geeklatte.com, ИТ-рисунки на кофе

Спасибо за внимание!

Критика и пожелания приветствуются.

ссылка на оригинал статьи http://habrahabr.ru/post/257087/

Новости BUILD 2015: Visual Studio Code, Visual Studio 2015 RC, Team Foundation Server 2015 RC, Visual Studio 2013 Update 5

Конференция Microsoft BUILD это момент выпуска новых инструментов для разработчиков и анонсов. И без сомнения, в этом году мы превзошли сами себя. В этом посте нам хотелось бы рассказать о главных новинках которые мы выпустили, но не забудьте так же посмотреть на анонсы которые опубликованы в блогах Скота Гатри, Терри Маерсон , Сомасегара и Брайана Харри. Если вы предпочитаете смотреть видео, мы так же опубликовали видео основных анонсов. Самая главная новость и краткое содержание этого материала – мы выпустили Visual Studio 2015 Release Candidate (RC), .NET Framework 4.6, Team Foundation Server 2015 RC, и Visual Studio 2013 Update 5 RC а так же предварительную версию нового инструмента работающего на MacOS, Linux и Windows — Visual Studio Code. Прямо сейчас вы можете начать загрузку пока читаете этот пост.

Visual Studio 2015 RC

В Visual Studio 2015 вошло очень много замечательных нововведений начиная от улучшений в редакторе кода (лампочки подсказки, CodeLens и карты кода) и улучшений, связанных с аутентификацией. Давайте начнем с того, о чем вы нас просили, улучшенной версии VS SDK для VS 2015.

Создание расширений для VS 2015. Вместе с этим релизом теперь доступна для загрузки VS 2015 SDK. Мы улучшили некоторые аспекты создания расширений для Visual Studio, в частности, создали NuGet пакеты для Visual Studio SDK сборок, и таким образом вы можете ссылаться на эти сборки используя NuGet. Так же мы убрали необходимость использования помощника при создании проекта или расширении функций вашего дополнения, теперь достаточно добавить новый элемент из списка доступных шаблонов. Дополнительная информация опубликована на сайте VS Extensibility Dev Center, так же посмотрите на примеры расширений и документацию SDK.

Улучшения отладчика. Visual Studio 2015 включает ряд улучшений о которых вы чаще всего нас просили, в частности это отладка lambda выражений, улучшения в функциях Edit & Continue, отладка дочерних процессов, а так же переработанные привычные инструменты, такие как конфигурация точек останова и окно конфигурирования исключений (Exceptions). Так же мы включили в Visual Studio 2015 отличные инструменты анализа производительности PerfTips и Memory Usage tool а так же переработанный инструментарий IntelliTrace.

.NET Framework 4.6: кросс-платформенная поддержка и новый JIT. Осенью был сделан анонс, который мы рады представить, как свершившийся факт: .NET теперь доступен на операционных системах Linux и MacOS. Вместе с этим мы продолжаем работу над изменениями в фреймворке которые позволят добиться большей кросс-платформенности (например, функции конвертации DateTime в Unix time). Но это конечно не все, так же мы включили в релиз новую версию 64-битного JIT компилятора, в котором есть улучшения производительности по сравнению с предыдущей версией. Более подробную информацию вы можете получить по ссылкам .NET Framework 4.6 release notes и roll-up post .NET blog.

Аутентификация с помощью корпоративных аккаунтов в дополнение к MSA. В Visual Studio 2015 мы улучшили опыт работы с аутентификацией при старте среды. Заметным нововведением стала возможность использования корпоративных аккаунтов в дополнение к Microsoft аккаунтам, теперь вы можете использовать свою электронную почту для идентификации, и легко управлять этими аккаунтами для аутентификации c Visual Studio Online и Azure.

Улучшенный механизм уведомления об обновлениях. В Visual Studio 2013 мы впервые включили механизм уведомлений через Notifications Hub для того чтобы упростить возможности по быстрому обновлению среды и ее компонент. В дополнение к этому в VS 2015 RC, мы добавили новый тип уведомлений, Learn more about a recent Visual Studio crash, который позволяет зафиксировать какие либо проблемы если с ними уже сталкивалось сообщество. Уведомления теперь содержат краткую информацию, тип, и возможность группировки.

,

Новый диалог Add Connected Services. Мы переделали механизм добавления сервисов с помощью диалога Add Connected Services (в контекстном меню References окна Solution Explorer) для того чтобы сделать его проще и эффективнее. В дополнение к этому так же добавилась возможность расширения функций этого диалога с помощью Connected Services SDK. С помощью этого диалога вы можете добавить следующие типы сервисов:

  • Azure Application Insights для диагностики приложения и анализа исключительных ситуаций
  • Azure Storage для эффективной работы с пространством хранения данных
  • Azure Mobile Services для сохранения данных приложения в облаке используя .NET или Node.js Web API
  • Azure Active Directory single sign-on для обеспечения механизмов аутентификации в вашем приложении ASP.NET
  • Salesforce для конфигурации сервисов и доступа к данным размещенным на платформе Salesforce через Salesforce REST APIs
  • Office 365 для доступа к календарям, контактам, почте, файлам, сайтам, пользователям и группам в Office 365

Дополнительные сервисы могут быть добавлены в это диалоговое окно с помощью механизма Extensions and Updates.

Улучшения редактора. Мы продолжаем работать над одной из самых важных частей Visual Studio – редакторе кода. Теперь у вас есть возможность видеть подсказки в виде лампочек и исправлять часто встречающиеся ошибки одним щелчком мыши. Новые функции окна Error List позволяют быстрее фиксировать ошибки, найденные в вашем коде и применять рекомендации по исправлению вашего кода после его анализа.

CodeLens. Ключевое нововведение коснувшееся технологии CodeLens – это возможность использовать эту функцию не только в максимальной редакции Visual Studio но и в младшей редакции. Теперь вы можете включить подсказки CodeLens в VS 2015 Professional а так-же и в Visual Studio Online. В дополнение к этому мы добавили индикаторы уровней файлов для C++, JavaScript, SQL, XAML, HTML, и CSS. Больше об этих возможностях вы можете узнать из заметки CodeLens availability for C++ JavaScript and SQL files.

Code Map. Мы улучшили механизмы того как карты кода показывают текущую информацию и упростили зум и навигацию по карте кода. В дополнение к этому вы можете видеть на картах кода проекты модульных тестов, и они будут выделены отдельным типом. Более подробную информацию вы можете получить из заметки по этой ссылке: detailed post on latest changes in Code Map.

Visual Studio Tools для Apache Cordova. Используя Tools for Apache Cordova вы можете создавать, осуществлять отладку и тестирование кросс-платформенных приложений для Android, iOS, Windows, и Windows Phone, и все это из одного единственного проекта Visual Studio. В этом релизе мы расширили список поддерживаемых устройств и версий ОС, включая Android 4.4, Android 4.3 и более ранние с jsHybugger, iOS 6, 7, и 8, ну и конечно же Windows Store 8.1. Дополнительную информацию вы можете узнать по ссылке Visual Studio Tools for Apache Cordova.

Visual Studio Tools для Universal Windows App Development. Мы интегрировали инструментарий создания универсальных приложений Windows сразу в установщик Visual Studio. Этот инструментарий позволяет создавать, обновлять, собирать, развертывать и осуществлять отладку универсальных приложений Windows для всех устройств, в том числе привычных Windows компьютеров, телефонов а базе Windows Phone, и Xbox. В дополнение к этому вы можете создавать desktop приложения которые будут иметь доступ к API Windows 10. (примечание – текущий релиз не годится для создания релизных, готовых к эксплуатации приложений с целевой платформой Windows 10). Вы можете установить эти инструменты в процессе установки Visual Studio 2015 выбрав пользовательский режим (Custom), и затем отметить «Universal Windows App Development Tools.» Дополнительную информацию вы можете узнать из руководства по универсальным приложениям Windows и на портале Windows Insider.

Улучшения языка и среды C++. Одним из постоянных запросов от наших пользователей является улучшение поддержки стандартов языка C++. В этом релизе мы продолжаем внедрять в компилятор возможности стандартов C++11, C++14 и даже C++17 для того чтобы сделать вашу работу более простой, приводящей к элегантному и совместимому коду. Некоторые из этих новых возможностей включают: resumable functions (resume/await), generic (polymorphic) lambda expressions, decltype(auto), thread-safe «magic» statics и return type deduction. В дополнение к этому, и понимая важность поддержки доступа к различным платформам и функциональности мы включили улучшения в области разработки кросс-платформенных C++ приложений. Вы можете использовать Visual Studio 2015 для генерирования динамических и статических библиотек, нативных бинарных приложений и Xamarin приложений для Android платформы. Так же мы включили экспериментальную поддержку создания iOS приложений прямо в среде Visual Studio 2015. Теперь вы можете создавать C++ код для платформы iOS используя всё удобство IntelliSense, рефакторинга, и других замечательных возможностей редактора. Работа над поддержкой платформы iOS еще ведется и скоро мы расскажем об этом более подробно.

Если вы интересуетесь этим типом разработки, обязательно посмотрите доклад “Building Multi-Device Applications in C++ with Visual Studio 2015”. Для того чтобы узнать более подробно о C/C++ посетите Visual C++ team blog. Детальная информация о новинках опубликована в Visual C++ секции release notes.

Улучшенная поддержка экранов с высоким DPI. Мы продолжаем работу над тем чтобы Visual Studio было удобно использовать на экранах с высоким разрешением. Например, мы добавили специальный сервис, управляющий всеми иконками для различных типов разрешений экрана и с разным уровнем масштабирования.

Team Foundation Server 2015 RC

Вместе с выходом предварительной версии TFS 2015 CTP мы расширили лицензионные правила, включив возможности веб-тестирования, гибкого управления портфелем проектов, построения графиков на основе запросов и командные комнаты в basic лицензию. Это означает что все команды до пяти человек могут воспользоваться возможностями Team Web Access совершенно бесплатно, а для больших команд эти возможности будут дешевле. Помимо лицензионных изменений в TFS 2015 так же вошли:

Политики — Gated Build и Code Review. Если вы работаете с проектом использующем в качестве системы контроля версий Git вы можете создать политики бранчей требующие успешной сборки проекта перед помещением изменений в этот бранч. Аналогично этому вы можете потребовать обязательного утверждения кода перед помещением его в бранч с помощью Сode Review. С помощью политик можно назначить минимальное количество утверждающих, конкретного утверждающего для определенных типов файлов или пути в системе контроля версий.
Быстрое редактирование кода. Если вам необходимо быстро отредактировать код теперь вы можете воспользоваться вашим веб-браузером и поместить изменения сразу в репозитарий исходного кода. При этом у вас будет возможность сравнивать изменения с помощью окна diff view. Если файл является Markdown илиHTML файлом, вы сможете осуществить предварительный просмотр.

Kanban Board. Новая возможность, которую мы добавили к Канбан доскам называется Kanban Split Columns. Для того чтобы отслеживать вашу работу более эффективно, каждая колонка вашей доски может быть разделена на две суб-колонки Doing и Done. В процессе перехода задач на вашей доске из одной колонки в другую критичным является то что ваша команда понимает под термином Done. В этом релизе мы добавили возможность указать определение done для каждой колонки на вашей доске.
Многие отметят что в RC, карточки претерпели некоторые изменения внешнего вида. Они стали шире и имеют белую сплошную заливку (до этого были цветные). Эти изменения связаны с более глубокой работой по включению возможности настройки карточек, включая дополнительные поля и теги. Пока эти настройки не доступны для RC, но скоро они появятся с очередным обновлением. Дополнительная информация по работе с досками Kanban в TFS..
Более детально о всех изменениях и новинках можно узнать из Team Foundation Server 2015 RC Release Notes и блога Brian Harry.

Другие инструменты Visual Studio ставшие доступными сегодня

Visual Studio Emulator для Android. Наш быстрый, бесплатный, базирующийся на технологии Hyper-V эмулятор получил новые возможности, которые оценят разработчики приложений для Android. В первую очередь это Device Profiles и WiFi simulation. Мы подготовили качественные профили для основных популярных устройств присутствующих на рынке для таких производителей как Samsung, Motorola, Sony, и LG, поэтому вы сможете отладить свое приложение для всего спектра конфигураций экранов, версий ОС Android и других свойств. Управление конфигурациями эмулятора доступно через меню Options > Tools > Visual Studio Emulator for Android.

Visual Studio 2015 Tools для Docker Preview. Сегодня стал доступным новый компонент Visual Studio 2015 RC Tools for Docker — Preview.  Вы можете создавать виртуальные машины с поддержкой docker engine, и конфигурировать docker с помощью интерфейса Visual Studio и скриптов, запаковывать контейнеры и публиковать их в виртуальные машины. Эта возможность очень помогает при работе с платформой .NET на операционной системе Linux. 

Microsoft Azure SDK для .NET 2.6. Этот релиз включает новые и расширенные инструменты разработчика Azure, включая Azure Resource Manager Tools, HDInsight Tools, и множество улучшений в текущих интегрированных инструментах. Более подробно о новых возможностях вы можете узнать из публикации what’s new in this release of Azure SDK 2.6.

Entity Framework 7 Beta 4. Последняя версия Entity Framework расширяет платформы и возможности хранения данных. Windows Phone, Windows Store, ASP.NET 5, и традиционные приложения для desktop application теперь могут воспользоваться всей мощью Entity Framework. EF7 поддерживает реляционные хранилища а так же нереляционные механизмы, такие как Azure Table Storage и Redis. Этот релиз содержит раннюю версию рантайма EF7 которая подключается к проектам ASP.NET 5. Более детально о возможностях EF7, можно узнать из публикации what is EF7 all about и заметки в блоге ADO.NET.

ASP.NET 5 Beta 4. Предварительная версия ASP.NET 5 Preview обновляет среду исполнения, включает механизм облегченной обработки запросов, и расширяет возможности кросс-платформенного использования на Windows, Mac, и Linux. Вы можете ознакомиться с полным списком изменений в ASP.NET секции release notes. Дополнительно о новых возможностях вы можете узнать из публикации в ASP.NET blog.

Что означает Release Candidate

В заключение хотелось бы пояснить, что для нас означает «кандидат в релиз». Если вы знакомы с предварительными версиями Community Tecnology Preview (CTP) то знаете что эти выпуски предназначены для сбора мнений и отзывов от энтузиастов которые хотят участвовать в тестировании предварительной версии нашего продукта. Если мы назвали текущий релиз RC, это означает что мы уверены в качестве этого выпуска, набор возможностей, которые мы хотели внедрить приближается к финальным целям, и мы ожидаем отзывы перед тем как объявить окончательный релиз. Как часть RC некоторые из компонент выпуска приобретают ярлык «go live» означающий полную поддержку этой технологии или возможности в коммерческом режиме, и вы можете создавать на основе этих технологий эксплуатируемые решения. Более подробно о термине «go live» вы можете узнать из лицензионного соглашения. Некоторые важные моменты текущего выпуска:

  • Side by Side. Visual Studio 2015 RC может работать параллельно с установленным Visual Studio 2013.
  • Install over Preview. Вы можете установить VS 2015 RC поверх любой VS 2015 Preview без необходимости деинсталлировать предыдущую версию. Для TFS 2015 Preview такой возможности не предусмотрено, и вам необходимо осуществить полную установку TFS 2015 или апгрейд с предыдущей версии TFS RTM (например с TFS 2013 Update 4). У вас будет возможность апгрейда с TFS 2015 RC до TFS 2015 RTM.
  • Windows 10 with VS 2015 RC “go-live.” Приложения, разработанные для Windows 10 не могут быть опубликованы в магазине приложений Windows Store. Для того чтобы публиковать и распространять приложения Windows 10 вам будет необходимо пересобрать проект с помощью финальной версии Visual Studio 2015.
  • ASP.NET 5 Preview with VS 2015 RC. ASP.NET 5 до сих пор находится в предварительной фазе разработки и не рекомендован для коммерческой эксплуатации. Для этих целей вы можете использовать ASP.NET 4.6.
  • Обновление до RTM. Обновление с RC до финального релиза (“RTM”) Visual Studio и TFS 2015 должно быть простой операцией. Для TFS, процесс апгрейда с RC до RTM будет работать как это обычно и было: вам будет необходимо установить последнюю версию и запустить помощник обновления. Не забудьте перед этим сделать резервные копии ваших баз данных TFS.

Если вы используете Visual Studio 2015 Release Canditate, пожалуйста держите с нами обратную связь, делитесь пожеланиями, мыслями и идеями, через сайт UserVoice, через функцию Send-a-Smile and Send-a-Frown прямо в Visual Studio, или с помощью отчета об ошибке с помощью сайта Visual Studio Connect тем самым вы помогаете сделать Visual Studio еще лучше.

ссылка на оригинал статьи http://habrahabr.ru/post/257083/