Обновить
0
Алексей@0x414cread⁠-⁠only

Пользователь

Отправить сообщение

Бесплатный пакет возможностей для разработчика: Visual Studio Dev Essentials

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


Всем привет!

Бесплатные инструменты разработки от Microsoft, вопреки распространненому мнению, включают в себя не только многофункциональную и мощную IDE Visual Studio 2015 Community, но и ряд других полезных компонентов и продуктов. Например, Visual Studio Team Services имеет свое бесплатное предложение для команд не более 5 человек. Эти и многие другие предложения теперь доступны каждому разработчику по программе Visual Studio Dev Essentials.

Новая программа Visual Studio Dev Essentials, анонсированная в ноябре 2015 года, предоставляет централизованный доступ к основным бесплатным компонентам для разработчика на Visual Studio, а так же предлагает различные инструменты для обеспечения полного цикла создания ПО, включая инструменты и продукты сторонних компаний, например Parallels, Xamarin и т.д.

Так же по программе Dev Essentials в течение нескольких месяцев предоставляется доступ к обучающим материалам, таким, как Pluralsight, Xamarin University и т.д. А также возможность получения приоритетной поддержки на форумах.
Читать дальше →

Замена выброса исключений уведомлениями

Время на прочтение10 мин
Охват и читатели18K
Предлагаю вашему вниманию перевод статьи "Replace Throw With Notification" Мартина Фаулера. Примеры адаптированы под .NET.

Если мы валидируем данные, обычно мы не должны использовать исключения, чтобы известить о валидационных ошибках. Здесь я опишу как отрефакторить такой код с использованием паттерна «Уведомление» («Notification»).



Недавно я смотрел на код, который делал базовую валидацию входящих JSON сообщений. Это выглядело примерно так…
Читать дальше →

Обработка «видео 360», очистка изображения: алгоритм и его реализация на C#

Время на прочтение5 мин
Охват и читатели23K
В последнее время, в связи с растущим трендом виртуальной реальности, все более актуальными становятся съемка/монтаж/обработка видео в формате «видео 360».

В данной статье я хочу рассказать об одном эксперименте по обработке «видео 360», который хорошо иллюстрирует некоторые особенности такого формата. Забегая вперед скажу, что эксперимент потребовал реализации несложного алгоритма и, конечно, без написания программы не обошлось.

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

Проверка исходного кода игрового движка Serious Engine v.1.10 к юбилею шутера Serious Sam

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

К юбилею выхода шутера от первого лица Serious Sam, который состоялся в марте 2016 года, разработчики игры из хорватской компании Croteam решили открыть исходный код игрового движка Serious Engine 1 v.1.10. Он заинтересовал много разработчиков, которые захотели изучить и улучшить движок. Я тоже решил поучаствовать в улучшении кода и подготовил статью с обзором ошибок, найденных с помощью статического анализатора PVS-Studio.
Читать дальше →

Стандарт ECMA-262 (JavaScript) в картинках, часть 2

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


В первой части статьи рассматривались структуры execution context, lexical environment и объекты Function. Вторая часть посвящена использованию this.
Как работает this

Никто не хочет пользоваться вашим продуктом

Время на прочтение12 мин
Охват и читатели24K
Каждое утро дизайнеры просыпаются 
чтобы с удовольствием приступить к работе над своими продуктами, будь то 
диджитал или материальные проекты, с внутренней уверенностью что 
люди захотят использовать их продукты и 
таким образом произойдет взрывообразный рост.

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

О, дружище, мой продукт будет ошеломительным! Он будет наполнен функционалом, опциями и настройками. Люди будут использовать его каждый день и будут любить пользоваться им!
— Дизайнер




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

Заблуждения программистов о телефонных номерах

Время на прочтение3 мин
Охват и читатели68K
Список составили разработчики Java, C++ и JavaScript библиотеки libphonenumber для парсинга, форматирования и проверки телефонных номеров

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

1. Телефонные номера, действительные сейчас, останутся действительными всегда. Телефонные номера определённого типа (например, мобильные), никогда не сменят тип.

Подключенный сегодня телефонный номер завтра могут отключить. Бесплатный сегодня номер завтра может стать платным. Оператор связи может расширить диапазон доступных номеров, добавив дополнительную цифру и увеличив длину номера.

Подсказка. Не сохраняйте свойства телефонного номера, такие как валидность или тип. Проверяйте эту информацию с помощью библиотеки, когда необходимо.
Читать дальше →

Вступление в Реактивное Программирование, которое вы пропустили

Время на прочтение5 мин
Охват и читатели92K
Ну что ж, вы решили выучить новую вещь, которая называется Реактивное программирование (Reactive Programming), а в частности — его имплементацию в виде Rx, Bacon.js, RAC или чего-то другого.
Читать дальше →

Машина Тьюринга на шаблонах

Время на прочтение9 мин
Охват и читатели23K
Каждый интересующийся шаблонами в С++ скорее всего слышал об их Тьюринг-полноте и связанных с этим шутках про «we put a language in your language, so you can program while you program». В этом посте я расскажу как с помощью шаблонов и константных выражений построить настоящую машину Тьюринга, вычисляющую результат своей работы во время компиляции, на которой можно будет запускать уже существующие программы. Например усердный бобер с 4 состояниями и 2 символами выглядит как-то так:
ADD_STATE(A);
ADD_STATE(B);
ADD_STATE(C);
ADD_STATE(D);

ADD_RULE(A, Blank, 1, Right, B);
ADD_RULE(A, 1, 1, Left, B);

ADD_RULE(B, Blank, 1, Left, A);
ADD_RULE(B, 1, Blank, Left, C);

ADD_RULE(C, Blank, 1, Right, Stop);
ADD_RULE(C, 1, 1, Left, D);

ADD_RULE(D, Blank, 1, Right, D);
ADD_RULE(D, 1, Blank, Right, A);

using tape = Tape<Blank>;
using machine = Machine<A, 0, tape>;
using result = Run<machine>::type;

int main() {
    print(result());
    return 0;
}

На выходе, как и положено, получаем
1 _ 1 1 1 1 1 1 1 1 1 1 1 1 

Тут можно посмотреть на код: https://ideone.com/MvBU3Z. Желающие узнать как все устроено внутри, добро пожаловать под кат.
Читать дальше →

Выпуск фреймворка Qt 5.6

Время на прочтение4 мин
Охват и читатели21K
На прошлой неделе, после девяти месяцев разработки, вышла версия 5.6 кроссплатформенного фреймворка Qt.

Qt позволяет разрабатывать приложения при помощи C++ и декларативного языка программирования QML, поддерживает все основные десктопные и мобильные платформы, а также некоторые встраиваемые и имеет открытый исходный код. Существует коммерческая версия Qt, содержащая дополнительные проприетарные модули.

Новый выпуск принес длительный срок поддержки, новые экспериментальные модули (и удаление устаревших), поддержку новых платформ, а также новый тарифный план для стартапов в коммерческой версии Qt.


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

«ES7» — неправильное название для планов по развитию JavaScript

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


Я не первый и не последний, кто вам об этом скажет, но стандарт ES2016 (или ES7) уже утвержден, и не включает в себя те функции, про которые говорят — «Будет в ES7».
Пора закончить упоминать ES7 в смысле “разные, предложенные сообществом функции, которые возможно когда-нибудь будут внесены в стандарт”.
Читать дальше →

Решето под названием Adobe Flash

Время на прочтение7 мин
Охват и читатели23K
Пока еще широко распространенный продукт Flash Player компании Adobe печально известен своей безопасностью. Регулярно становится известно об очередной zero-day уязвимости во Flash, используемой хакерами в APT-кампаниях. 2015 год выдался особенно урожайным на такие уязвимости. Большая доля критических RCE-уязвимостей были вызваны некорректной работой с памятью: была возможна запись в освобожденную память в куче процесса Flash.

В этой статье мы поисследовали безопасность Adobe Flash и выяснили, что многие его «дыры в безопасности» — хронические, и решить их можно разве что переписыванием кода с нуля, в то время как разработчики ставят заплатку на заплатку, что, конечно, не повышает уровень безопасности. А еще мы продемонстрируем некоторые найденные нами и незакрытые на данный момент уязвимости!
Читать дальше →

Проблема с доступом и интересный ключ реестра Windows

Время на прочтение3 мин
Охват и читатели37K
Цель данной статьи — рассказать об интересном ключе реестра Windows:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\CrashOnAuditFail

Пару лет назад он подарил мне несколько часов напряженного траблшутинга проблем доступа к общим папкам и, так как ни тогда, ни сейчас я не вижу объяснения этой проблемы в поиске, я решил его описать. Если вам интересно, как может получиться, что права доступа у вас и вашего коллеги есть, но получить доступ к общей папке может только один из вас, то добро пожаловать под кат.
Читать дальше →

Парадокс Симпсона и немного Pandas

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

О чем статья?


В этой статье я хочу рассмотреть один из наиболее известных примеров парадокса Симпсона, попутно немного рассказав о MultiIndex в Pandas.
Обо всем по порядку.

Парадокс Симпсона — контринтуитивное явление в Статистике, когда мы видим в каждой из групп данных определенную зависимость, но при объеденении этих групп зависимость исчезает или становится противоположной. Например, если смотреть изменение среднего заработка женщин 25 лет и старше, работающих полный день, между 2000 и 2012 годами с различным уровнем образования, то мы получим следующие цифры (все расчеты проводились с поправкой на инфляцию):

  • Less than 9th grade -3.7%
  • 9th-12th but didn’t finish -6.7%
  • High school graduate -3.3%
  • Some college but no degree -3.7%
  • Associate’s degree -10.0%
  • Bachelor’s degree or more -2.7%

По этим цифрам можно сделать вывод, что заработок женщин за 12 лет снизился. Однако, на самом деле, средний заработок женщин с полной занятостью вырос на 2.8% (подробнее про этот пример можно почитать тут).

Одним из наиболее известных примеров парадокса Симпсона является случай половой дискриминации при поступлении в Калифорнийский унивеситет Berkeley. Его и будем рассматривать далее.
Читать дальше →

2.2 Потоки

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


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

На GitHub опубликован исходный код компактного гипервизора

Время на прочтение2 мин
Охват и читатели33K
Известный гуру внутреннего устройства Windows и архитектуры ARM Алекс Ионеску опубликовал на ресурсе GitHub исходный текст базовой части гипервизора (инструмент виртуализации). Гипервизор содержит в себе множество замечательных свойств, включая, компактный размер, поддержку современных архитектур микропроцессоров, минимальное использование ассемблера в исходных текстах, а также комментарии по его использованию. При его разработке упор делался на максимальную компактность.



Опубликованный проект является настоящей находкой для системных программистов, а также исследователей по безопасности, которые интересуются низкоуровневыми функциями ОС. Гипервизор получил название SimpleVisor, поддерживает только современные 64-битные системы и был успешно протестирован на совместимость с такими системами как Windows 8.1 на микропроцессоре архитектуры Intel Haswell, а также Windows 10 на архитектуре Intel Sandy Bridge.

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

Алгоритмы — это лишь одна из переменных в уравнении

Время на прочтение3 мин
Охват и читатели46K
Прочитал весьма занимательную статью про важность алгоритмов, вывод из которой показался мне весьма спорным

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



Все дело в том, что разработка ПО — это не просто алгоритмы или языки.
Читать дальше →

Полнотекстовый нечеткий поиск с использованием алгоритма Вагнера-Фишера

Время на прочтение3 мин
Охват и читатели25K
Статья написана об использовании алгоритма вычисления расстояния Левенштейна для нечеткого поиска в тексте, без использования вспомогательного словаря.

Расстояние Левенштейна используется для сравнения двух слов или двух строк, чтобы определить их схожесть. Некоторое время назад передо мной встала схожая задача — в заданной строке искать вхождение слов, словосочетаний и формул, похожих на образец.
Читать дальше →

Компания Crytek анонсировала новый движок CryEngine V

Время на прочтение2 мин
Охват и читатели43K
image
Скриншот изображения на новом СE V с использованием DX 12

В этот вторник, 15 марта, компания Crytek анонсировала выход своего нового движка CryEngine V, который будет распространяться бесплатно. Воспользоваться новой разработкой компании сможет каждый пользователей без каких-либо ограничений, в том числе разработчики получат доступ к исходному коду движка.

Среди основных нововведений:

  • Поддержка C#;
  • Поддержка DirectX 12;
  • Продвинутая волюметрическая система, адаптированная для работы над VR-проектами, которая позволит оптимизировать 3D-рендеринг и минимизировать просадки в производительности;
  • Новая система частиц, которая позволяет сфокусировать всю нагрузку при рендеренге в режиме реального времени на GPU;
  • Новый лаунчер и переработанный UI;
  • Поддержка FMOD Studio;
  • Выделенный канал CRYENGINE Q&A для общения разработчиков.

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

Немного размышлений и советов по оптимизации кода на С++

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


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

Как правило, язык C++ используют там, где требуется высокая скорость работы. Но на C++ без особых усилий можно получить код, работающий медленнее какого-нибудь Python/Ruby. Именно подобным кодом оперируют многочисленные сравнения Any-Lang vs C++.

Вообще, оптимизация бывает трех типов:

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

Специально заниматься оптимизацией готового кода следует только после того, как проект закончен и используется. Как правило, оптимизация потребуется только в небольшой части проекта. Поэтому сначала нужно найти места в коде, которые съедают большую часть процессорного времени. Ведь какой смысл ускорять код, пусть даже на 500%, если он отнимает только 1% машинного времени? И следует помнить, что, как правило, гораздо больший выигрыш в скорости дает оптимизация самих алгоритмов, а не кода. Именно про данный ее вид говорят: «преждевременная оптимизация — зло» (с).

Второй тип оптимизации — это изначальное проектирование кода с учетом требований к производительности. Такое проектирование не является ранней оптимизацией.

Третий тип даже не совсем оптимизация. Скорее это избегание неоптимальных языковых конструкций. Язык C++ довольно сложный, при его использовании частенько нужно знать, как реализован используемый код. Он достаточно низкоуровневый, чтобы программисту пришлось учитывать особенности работы процессоров и операционных систем.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Ярославль, Ярославская обл., Россия
Дата рождения
Зарегистрирован
Активность