Обновить

Компания Инфопульс Украина временно не ведёт блог на Хабре

Сначала показывать

Эволюция веб-фреймворков Microsoft. ASP.NET vNext

Время на прочтение11 мин
Охват и читатели49K


Предпосылки к переменам


Новость о выходе ASP.NET vNext в сети распространилась достаточно быстро вместе с анонсом наиболее интересных новшеств, предложенных в обновлении. ASP.NET MVC 6 получил новое имя и позиционируется как что-то действительно новое в среде web фреймворков Microsoft (MS).
Читать дальше →

Сравнение сервисов очередей Azure Queues и Service Bus Queues

Время на прочтение13 мин
Охват и читатели8.4K
Microsoft Azure поддерживает два типа механизмов очередей: Azure Queues и Service Bus Queues.

Azure Queues, является частью инфраструктуры Azure storage, предоставляя простой REST-ориентированный Get/Put/Peek интерфейс для надёжной, гарантированной доставки сообщений внутри сервиса или между несколькими сервисами.

Service Bus Queues — это часть инфраструктуры Azure messaging, которая занимается очередями, публикацией/подпиской, веб-сервисами и паттернами интеграции (больше об этом — Overview of Service Bus Messaging Patterns).

Сервисы работают параллельно, Azure Queues появился раньше, как отдельный механизм очередей, построенный поверх сервисов хранения данных Azure.
Service Bus Queues построены поверх инфраструктуры «брокеров сообщений», разработанной для связи приложений или компонентов приложения, которые могут требовать поддержки различных протоколов, работать в разных доменах или сетевых окружениях.

Данная статья сравнивает две этих системы очередей, акцентируя внимание на различиях в их поведении и реализации. Также статья даёт советы по выбору типа очереди, которая лучше подойдёт вашему приложению.
Читать дальше →

Проблема чистого листа

Время на прочтение3 мин
Охват и читатели55K


Одна из часто встречающихся проблем среди писателей, журналистов и прочих «работников пера» — это проблема «чистого листа». Это когда тебе нужно что-то написать, но всё, что на данный момент имеется — пустая страница. На которой нужно начать что-то писать. Мысли, вроде бы, есть, и время тоже есть, но написать первое слово, предложение — трудно. Кажется, что именно они определят весь последующий текст, сразу и напрямую повлияют на качество результата. И поэтому написать их — страшно.

Для программистов проблема «чистого листа» выглядит по-своему. Вот приходишь ты с утра на работу. Вчера был сложный, насыщенный день. Ты многое сделал, с последним багом разбирался полтора часа уже после окончания официального рабочего дня — но это нужно было сделать! Ведь ваш продукт делается по качественным современным процессам, у него есть обязательные ночные сборки и было очень важно исправить баг вовремя, чтобы сегодня тестировщики уже могли работать с новой версией продукта. Ты вчера успел, ты молодец, сборка прошла успешно — и это самое важное. Ведь запоротая по твоей вине сборка — это позор.

Но вот сегодня утром — всё как-бы спокойно. Вчерашний баг закрыт, продукт собирается нормально. Ты включаешь компьютер, логинишься — и перед тобой «чистый лист». Да, задач ещё много, но в данный момент ты ещё не приступил ни к одной. Тянет почитать почту, проверить новости. Ты ещё не «в контексте» работы. Вот уж когда начнёшь работать — тогда только держись! Но ещё ведь не начал. Ну и дальше стандартное «Хабр, новости, друг скинул ссылку на смешное видео, надо попить чаю, ой уже скоро обед» и т.д.

Что же делать?
Читать дальше →

Почему нам необходима рефлексия в C++1y

Время на прочтение4 мин
Охват и читатели17K
Программам необходимы данные. Программы выдают лишь настолько хороший результат работы, насколько полны и валидны были входные данные. Для некоторых программ входными данными являются обычные файлы или полученная из сети информация (пример — ваш браузер). Другие программы оперируют исходными кодами. Эти вторые «мета-программы» тоже нуждаются в данных. Чем они будут качественнее — тем качественнее будет и результат.

Что же за данные мы «скармливаем» таким программам? Ну, в С++ более важным чем «что?» является вопрос «когда?» (помните Морфеуса?). Программа на С++ это всего-лишь последовательность битов, которые компилятор пытается прочитать и понять. И вот в процессе этого «понимания» компилятор преобразует код на С++ в машинные инструкции и (что особенно интересно!) выполняет некоторую часть кода вашей программы. Да, мы говорим о мета-программировании на этапе компиляции.

Возвращаемся к вопросу «что?». Мы хотим иметь доступ ко всем сущностям, которые только теоретически могут быть доступны на этапе компиляции: типы, члены классов, функции, аргументы, пространства имён, номера строк кода, имена файлов — и всё это хорошо бы иметь в «чистом виде», без каких-либо странных препроцессорных хаков или использования сторонних утилит. Кроме того, хорошо бы получить и менее очевидные вещи: информацию о конвертируемости одних типов в другие, отношениям наследования и агрегации, дружественных классах и функциях и т.д.

Компилятор языка С++ уже имеет всю эту информацию! Но, к сожалению, не в доступной для мета-программирования форме. Получается странная такая ситуация — мы можем выполнить кое-какой код на этапе компиляции — но вот большинства данных у нас нет. Ну и здесь было бы логично задаться вопросом «А как же мы можем эти данные получить?».
Читать дальше →

Интервью с Джеффри Рихтером на конференции Microsoft SWIT 2014

Время на прочтение11 мин
Охват и читатели11K


27-28 марта в Киеве прошла конференция Microsoft SWIT 2014. В течение двух дней разработчики и ИТ-менеджеры могли увидеть и услышать большое количество выступлений от докладчиков со всего мира.

Самое главное внимание, конечно же, привлекли доклады Джеффри Рихтера. Джеффри – большой авторитет для многих разработчиков, эксперт в технологии .NET и владелец компании Wintellect. У меня состоялось интервью с ним, часть вопросов в котором была задана читателями Хабра. Проговорили мы почти час, кому интересно — добро пожаловать под кат.

(Если вам кажется, что вы этот топик где-то уже видели раньше, то нет, то было одно интервью, а это — другое).
Читать дальше →

Плагин к Sublime Text для публикации статей на Хабр

Время на прочтение6 мин
Охват и читатели15K


Для написания статей на Хабр я пользуюсь текстовым редактором Sublime Text. Почему это хороший редактор на Хабре уже много раз писали (например тут). Есть, однако, при написании статьи момент, когда её нужно переносить для публикации на Хабр, ну, знаете: Хабр->Добавить пост->Название, хабы, текст (Ctrl+C/Ctrl+V), метки, предпосмотр. В этот момент оказывается, что как-то текст с картинками сверстался на Хабре некрасиво, начинаются правки. Править в браузере? Неудобно и небезопасно. Править в Sublime и постоянно копипастить? Неудобно и надоедает.

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

Под катом мы научимся писать плагины к Sublime и разберёмся как из питоновского кода взаимодействовать с Хромом, используя его протокол удалённой отладки. Полный код плагина на GitHub прилагается.
Читать дальше →

Вопросы Джеффри Рихтеру

Время на прочтение1 мин
Охват и читатели11K
27-28 марта в Киеве пройдёт конференция Microsoft Swit. 2 дня технических докладов, несколько десятков спикеров, мастер-классы и практические сессии для разработчиков.

imageОдним из самых интересных докладчиков будет Джеффри Рихтер — автор популярных книг «CLR via C#. Программирование на платформе Microsoft .NET Framework на языке C#», «Windows для профессионалов. Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows.» и других. Джеффри — соучредитель компании Wintellect, архитектор, консультант компаний Intel и Microsoft, автор колонки .NET в журнале MSDN.

На конференции он выступает с двумя докладами:
  • Windows Store Apps Process Model
  • Performing Asynchronous I/O Bound Operations

В перерывах между докладами у меня запланировано интервью с Джеффри, поэтому я предлагаю читателям Хабра задавать в комментариях к этому топику интересующие их вопросы и голосовать за вопросы друг друга. Вопросы, набравшие максимум голосов, непременно будут заданы Рихтеру. Ответы — отдельной статьей на Хабре.
Читать дальше →

Баги реализации стандарта С++11 в Visual Studio 2012, которые были исправлены в Visual Studio 2013

Время на прочтение9 мин
Охват и читатели22K

В этой статье будет рассмотрен ряд багов в реализации стандарта С++11, которые имелись в Visual Studio 2012 и были исправлены в Visual Studio 2013. Таким образом мы теперь можем использовать С++11 так, как в теории предполагается его использовать. Если для обхода багов VS2012 вам пришлось понаписывать «костылей» — теперь их можно убрать.

К сожалению, не все баги были исправлены, кое-что мигрировало из VS2012 в VS2013, а также появились новые баги. Под катом вы найдёте детальный разбор текущего состояния дел.
Читать дальше →

Хуки — это просто (часть 2)

Время на прочтение4 мин
Охват и читатели20K
image

Некоторое время назад я писал вводную статью о хуках (что это, зачем нужно, Hello world). Статья задумывалась простой, минималистичной и, вроде бы, такой и получилась. Единственный упрёк, который я услышал в комментариях — «Зачем же брать библиотеку Microsoft Detours, которая для коммерческого использования стоит 10 000$ ?». Замечание справедливое. В этой статье я приведу тот же пример с использованием другой библиотеки ценой примерно в 20 раз меньше (что уже вполне себе в рамках разумного) — madCodeHook.

Для лучшего понимания данной статьи рекомендуется сначала прочитать первую часть.
Читать дальше →

Шпаргалка по С++11 для печати на кружке

Время на прочтение1 мин
Охват и читатели47K


Вот захотелось мне такое сделать и я сделал.
Картинка под спойлером


Полноразмерная картинка (на случай если Хабр пережмёт картинку под спойлером). Подходит для печати на стандартной кружке, площадь поверхности 20 х 8.8 см, 300 dpi (ребята в магазине сувениров сказали, что это стандарт).
Шпаргалка, послужившая основой

P.S. Да, я в курсе, что у меня не вышло вместить 1300-cтраничный стандарт на одну кружку. В следующий раз точно получится, я уверен.

Нужно ли читать код используемых библиотек?

Время на прочтение4 мин
Охват и читатели20K
В какое прекрасное время мы живём! Вот пишешь ты программу и понадобилась тебе библиотека для чего-нибудь — она точно найдется! Многие библиотеки лежат в opensource и даже распространяются по приятным лицензиям типа LGPL, взял — и решил проблему. Делов-то: способ подключения описан в readme, библиотека предоставляет красивые интерфейсы, демка есть (она даже компилируется и работает). Вообще ООП со всеми его идеями абстракций, интерфейсов, инкапсуляции внутренних данных — мощнейшая штука (тут без иронии).

Но давайте подумаем, где и когда начинается «абстракция». Вот, например, есть у меня автомобиль, на котором я раз в неделю езжу в супермаркет. В этом случае он для меня вполне себе абстракция уровня «руль, три педали и пара рычажков», предоставляющая нужный мне функционал. Причём я могу пользоваться им долгие годы, не особо задумываясь что там под капотом — двигатель или волшебные гномы, зачем-то пьющие бензин и крутящие колёса. Но если я работаю автомехаником, конструктором автомобилей ну или попросту профессиональным водителем — я уже не могу позволить себе смотреть на машину столь «свысока», знать её внутреннее устройство — это моя работа. Покупатель молока в магазине может вообще ни разу в жизни не видеть живую корову, но вот фермер, который эту корову выращивает, просто обязан знать всё о её здоровье\содержании\питании\уходе\дойке. Ну и т.д. Есть чёткое разделение на «пользователей» продукта и его «создателей». Первые могут позволить себе не задумываться о деталях, вторые — нет.


Если вы дочитали аж до этого места, с большой долей вероятности вы — программист. Ещё раз, вы — человек, который профессионально занимается созданием компьютерных программ. Который, наверное, отвечает за свой труд и, возможно, считает себя неплохим специалистом. И вы считаете возможным взять чужую библиотеку и, ознакомившись с ней на уровне её интерфейса, использовать в своём продукте?
Читать дальше →

Доступ к контенту Modern-приложения на HTML\JS из Desktop-приложения под Windows 8

Время на прочтение4 мин
Охват и читатели6.7K
Иногда бывает нужно из одной программы добраться до содержимого другой программы. Ну, например, получить из неё какой-нибудь контент, или автоматизировать действия. В случае классических приложений Windows эта проблема решается весьма просто — находим родительское окно через FindWindow, далее, зная его HWND, можем перечислить дочерние окна и элементы управления на них. А тут уже полная свобода — можем получить текст, написанный на этих элементах, изменить их размеры и положение, отправить сообщения для эмуляции клика мышью или набора текста с клавиатуры, даже удалить имеющиеся элементы и создать новые.

Но для Modern-приложений всё иначе. Давайте возьмём, к примеру, приложение «Погода» из стандартного набора Windows8. Допустим, мы открыли его в боковой панели и хотим как-то узнать из нашего обычного (Desktop) приложения, а какую же оно показывает температуру. Если посмотреть на окно «Погоды» с помощью Spy++ мы увидим родительское окно типа Windows.UI.Core.CoreWindow и вложенное в него окно Web Platform Embedding. А значит перед нами Modern-приложение написанное на HTML\Js и живущее внутри встроенного компонента браузера. То есть вышеописанные манипуляции с Windows-контролами не имеют смысла — их в этом окне попросту нет, поскольку всё его содержимое рендерится целиком.

Но давайте же всё-таки попробуем вытащить из него текущую температуру.
Читать дальше →

Resumable функции

Время на прочтение11 мин
Охват и читатели26K
На прошлой неделе в мире С++ произошло интересное событие. Компания Microsoft объявила о выходе обновления к компилятору С++ в Visual Studio 2013. Само по себе обновление компилятора отдельно от Visual Studio или её сервис-пака — уже нетривиальное для Microsoft событие. Но ещё интереснее то, что вошло в это обновление. Полный список можно почитать по ссылке выше, а я остановлюсь только на одном моменте — resumable функции. Для полного понимания ситуации: Microsoft изрядно протроллила и комитет по стандартизации С++ и разработчиков gcc\clang, выпустив (тут надо внимательно) реализацию экспериментальной и не утверждённой ещё возможности будущего стандарта C++17, основанной на экспериментальных и не утверждённых ещё возможностях будущего стандарта C++14, которые в свою очередь являются исправлениями не сильно ещё вошедших в повседневное программирование возможностей С++11.

Достаточно гиковский ход, не находите?

А ниже будет перевод статьи с meetingcpp.com, рассказывающей о том, что это за фича и как её использовать.
Читать дальше →

Руки с мылом мыли? Тогда чай без сахара

Время на прочтение3 мин
Охват и читатели29K


Вы, возможно, помните как несколько лет назад стремительно стали набирать популярность NoSQL-базы данных (MongoDB, DynamoDB и другие). Многие пророчили смерть классических реляционных баз данных, торжество новых парадигм и всеобщее счастье в мире. И вы, возможно, в курсе того, как в последний год (или около того) наблюдается откат этой эйфории — выходят статьи типа «Broken by Design: MongoDB Fault Tolerance» и Why You Should Never Use MongoDB. Народ на Хабре на Тостере интересуется — «А почему же Монгу критикуют?», на что получает ответы «перерекламировали», «серебрянной пули нет», «надо выбирать базу данных по задачам».

Все 3 очевидных варианта — «Использовать реляционную БД», «Использовать NoSQL-БД», «Выбирать БД по задачам проекта» мне не нравятся по причине, высказанной в заголовке статьи.
Читать дальше →

Ближайшие события

3 способа разработки

Время на прочтение9 мин
Охват и читатели29K

Разработка, Направленная на Создание Мусора


Популярным способом процесса разработки в некоторых крупных фирмах является Разработка, Направленная на Создание Мусора, или сокращенно РНСМ. РНСМ питается верой в то, что единственно необходимая для получения денег вещь — это хорошая идея. Очевидный нонсенс, но он является опорой для людей, страдающих недостатком воображения. В данной теории говорится, что Идея — это редкая, ценная и уникальная вещь и вся хитрость в том, чтобы поймать её.

Главным продуктом РНСМ являются бессмысленности, написанные по столь «ценным» идеям: концепты, графики, описания дизайна и прочие продукты, создаваемые для одной лишь цели — быть выброшенными в корзину.

Это работает так:
Читать дальше →

История о двух мостах

Время на прочтение2 мин
Охват и читатели87K


Два пожилых инженера как-то разговаривали о своей жизни и, конечно же, хвастались друг другу своими лучшими проектами. Первый инженер рассказал о том, как когда-то спроектировал и построил один из величайших мостов, когда-либо существовавших.

«Мы построили его через ущелье, на дне которого протекала река», — рассказывал он своему другу. «Оно было широким и глубоким. Мы потратили два года на одно только изучение рельефа, выбор архитектуры и материалов. Мы наняли лучших инженеров и спроектировали этот мост, на что ушло ещё пять лет. Мы заключили договор с самой большой строительной фирмой на изготовление опор, конструкций и постройку дорог, соединяющих будущий мост с близлежащими магистралями. Десятки людей погибли при постройке моста. Наш мост был многоуровневым — под основной трассой могли ходить поезда, и ещё у нас были отдельные дорожки для велосипедистов. Этот мост олицетворяет значительную часть моей жизни».
Читать дальше →

Process Explorer vs Process Hacker

Время на прочтение6 мин
Охват и читатели98K
Многим людям рано или поздно приходит в голову мысль, что стандартный менеджер процессов Windows весьма слаб по функционалу. Начинаются поиски альтернативы, которые в основном тут же и заканчиваются при обнаружении Process Explorer от Марка Руссиновича. Вот и Хабр даже советует эту программу.

Что тут можно сказать? Конечно, Process Explorer — это хорошая программа. Однако, не идеал. Именно в пику её неидеальности существует не только бесплатная, но и свободная альтернатива — Process Hacker. А теперь мы детально и по пунктам рассмотрим, почему Process Hacker не просто «чуть-чуть лучше», а лучше на порядок, лучше на столько, что переводит программу для продвинутого пользователя в класс инструмента системного программиста или администратора.
Читать дальше →

Алгоритм выбора STL-контейнера

Время на прочтение1 мин
Охват и читатели65K


UPD: схема заменена на вариант с контейнерами из С++11, соавторы — в комментариях ниже

Первый вариант схемы - без контейнеров из С++11

Киевская ITSM встреча 26 сентября

Время на прочтение2 мин
Охват и читатели2.7K
С каждым днем, новым заказчиком и новой линейкой продуктов бизнес все больше хочет быть уверен в стабильности и эффективности IT-решений которые он использует. Даже небольшие сбои могут стать критичными в не удобный момент, не говоря уже об инструментах которыми сотрудникам не удобно пользоваться.
Любой сервис требует тщательной подготовки и проверки, прежде чем его начнут полноценно использовать и полагаться на него. А хорошо спроектированная система поддержки внутренних сервисов, как и управление внешними сервисами, позволяет длительный период быть уверенным, что мы можем в любой момент воспользоваться необходимым инструментом.
Как подготавливать сервисы, что лежит в их основе, как гарантировать их доступность и как это донести бизнесу вы сможете узнать на второй киевской ITSM-встрече.

Читать дальше →

С днём программиста!

Время на прочтение1 мин
Охват и читатели4.4K
Наша компания от всей души поздравляет с профессиональным праздником программистов — людей, чья фантазия способна рождать миры, чьё искусство вызывает восхищение, а трудолюбие позволяет создавать настоящие шедевры. Программист — архитектор и строитель современного цифрового мира, на совести которого лежит его функциональность, скорость и удобство. Так пожелаем же им интересных проектов, достойных свершений и полной творческой самореализации.