Как стать автором
Обновить
0
0

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

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

Не умер ли еще Microsoft COM, где можно найти его применение?

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров7K

К написанию статьи меня подтолкнул вот такой вопрос:

Всем добрый день. Хотел бы получить краткие и понятные для новичка ответы на следующие вопросы:

Что такое COM объект?

Как происходит разработка COM объекта?

Какие особенности реализации COM Microsoft?

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

Ниже предлагаю свой развернутый ответ, который, почему-то, неизменно возбуждает вопрос из нового заголовка статьи. Интересно было получить оценку сообщества профессионалов. Надеюсь и новички смогут найти что то полезное.

Читать далее
Всего голосов 12: ↑4 и ↓8-4
Комментарии47

БабаГрам: Телеграм для бабушки

Время на прочтение8 мин
Количество просмотров58K

Однаждый мне рассказали о самодельном девайсе под названием Yayagram (по какой-то причине описанном создателем в Твиттере, а вот тут по-русски). Я на него посмотрел и решил сделать свой, с преферансом и поэтессами аркадными кнопками и старым термопринтером.

Так родился БабаГрам, чёрный ящик, открывающий моей бабушке общение в Телеграме.

В статье - про устройство и сборку сего девайса.

Читать далее
Всего голосов 313: ↑312 и ↓1+311
Комментарии143

Как разрабатываются и производятся процессоры: изготовление чипа

Время на прочтение9 мин
Количество просмотров47K
image

Это третья статья из серии о проектировании ЦП. В первой статье мы рассмотрели архитектуру компьютера и объяснили его работу на высоком уровне. Во второй статье говорилось о проектировании и реализации некоторых компонентов чипа. В третьей части мы узнаем, как архитектурные проекты и электрические схемы становятся физическими чипами.

Как превратить кучу песка в современный процессор? Давайте разберёмся.

Часть 1: Основы архитектуры компьютеров (архитектуры наборов команд, кэширование, конвейеры, hyperthreading)
Часть 2: Процесс проектирования ЦП (электрические схемы, транзисторы, логические элементы, синхронизация)
Часть 3: Компонование и физическое производство чипа (VLSI и изготовление кремния)
Часть 4: Современные тенденции и важные будущие направления в архитектуре компьютеров (море ускорителей, трёхмерное интегрирование, FPGA, Near Memory Computing)

Как говорилось ранее, процессоры и вся другая цифровая логика составлены из транзисторов. Транзистор — это переключатель с электрическим управлением, который может включаться и отключаться подачей или отключением напряжения на затворе. Мы сказали, что существует два вида транзисторов: nMOS-устройства пропускают ток, когда затвор включён, а pMOS-устройства пропускают ток при выключенном затворе. Базовая структура процессора — это транзисторы, созданные из кремния. Кремний — это полупроводник, потому что он занимает промежуточное положение — не проводит ток полностью, но и не является изолятором.

Чтобы превратить кремниевую пластину в практическую электрическую схему добавлением транзисторов, производственные инженеры используют процесс под названием "легирование". Легирование — это процесс добавления в базовый субстрат кремния тщательно выбранных примесей для изменения его проводимости. Цель заключается в том, чтобы изменить поведение электронов так, чтобы мы могли ими управлять. Существует два вида транзисторов, а значит, и два основных вида легирования.
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии10

Об одной недокументированной особенности умножения и деления на процессорах x86

Время на прочтение4 мин
Количество просмотров9.1K

Начиная с процессора 80286 компания Intel поддерживала полную совместимость «снизу-вверх» в системе команд. То есть если какая-то из команд процессора дает такой-то результат на 8086, то и на более поздних процессорах результат будет точно таким же (сейчас не будем рассматривать ошибки типа неправильного деления в Pentium I).

Но так ли это? Что за вопрос! Ведь если бы совместимость не сохранялась, то старые программы не могли бы выполняться, а ведь до сих пор на любом компьютере можно поностальгировать запустив Norton Commander или Tetris. Однако не все так просто… Начиная с 8080 в процессорах Intel есть регистр флагов, состояние которого определяется результатом последней команды вычисления данных. Все флаги в нем давно описаны и поведение их строго зафиксировано. Кроме двух исключений.

Читать далее
Всего голосов 40: ↑40 и ↓0+40
Комментарии20

Эмуляция компьютера: интерпретатор CHIP-8 и формирование изображений

Время на прочтение5 мин
Количество просмотров4.1K
Недавно мы опубликовали перевод первого материала из серии статей, посвящённой эмуляции компьютера. Автор этих статей подробно рассказывает о написании интерпретатора CHIP-8 на C++. В той публикации мы устроили опрос о целесообразности перевода продолжения цикла. Почти 94% тех, кто принял участие в опросе, продолжение перевода поддержали. Поэтому сегодня мы представляем вашему вниманию второй материал о CHIP-8.


Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии3

Коды ошибок — это гораздо медленнее, чем исключения

Время на прочтение12 мин
Количество просмотров20K
На современных 64-битных PC-архитектурах использование C++-исключений означает всего лишь добавление к функциям недостижимого кода с вызовами деструктора и ухудшение производительность менее чем на 1%. Такие небольшие ухудшения производительности сложно даже измерить. Обработка редких ошибок с использованием возвращаемых значений требует дополнительных операций ветвления, которые, в реалистичных сценариях, замедляют программы примерно на 5%. Такой подход, кроме того, менее удобен, чем использование исключений. Если выбрасывается исключение, то на «раскрутку» каждого кадра стека тратится примерно 2 мкс.



C считается самым быстрым языком программирования. В C++ есть возможности, которые лишь повышают удобство работы, не влияя на производительность, в сравнении с C, и возможности, которые на производительность влияют. Эти возможности очень помогают в деле улучшения качества кода. В результате ими, несмотря ни на что, достаточно часто пользуются. Полиморфизм времени выполнения — это буквально вездесущая возможность, а вот исключения распространены меньше.
Читать дальше →
Всего голосов 73: ↑60 и ↓13+47
Комментарии54

Эмуляция компьютера: интерпретатор CHIP-8

Время на прочтение9 мин
Количество просмотров6.5K


Меня, по ряду причин, всегда завораживала эмуляция. Программа, которая выполняет другую программу… Мне эта идея кажется невероятно привлекательной. И у меня такое ощущение, что тот, кто напишет подобную программу, не пожалеет ни об одной минуте потраченного на это времени. Кроме того, написание эмулятора — это очень похоже на создание настоящего компьютера программными средствами. Мне было очень интересно разбираться в устройстве компьютерной архитектуры, писать простой HDL-код, но эмуляция — это гораздо более простой способ ощутить себя тем, кто своими руками создаёт компьютер. А ещё, в детстве, когда я впервые увидел игру Super Mario World, я поставил себе цель, которая до сих пор не потеряла для меня ценности. Она заключается в том, чтобы полностью понять то, как именно работает эта игра. Именно поэтому я уже некоторое время подумываю о написании эмулятора SNES/SNC. Недавно я решил, что пришло время сделать первый шаг к этой цели.

Предлагаю поговорить о разработке эмулятора и обсудить простой, но полноценный пример эмуляции CHIP-8.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии1

История создания Norton Commander. Часть 1 / 3

Время на прочтение14 мин
Количество просмотров48K
Пьяный программист сидит с открытым Norton Commander на экране. На обоих панелях открыт диск С. «Ну и зачем мне два диска С с одними и теми же файлами?» — подумал он и стер все его содержимое, нажав F8 и Enter.
— анекдот конца 80-х годов

Нортон (Norton Commander) for DOS – это файловый менеджер для DOS, который существовал в 5 основных версиях – 1.0, 2.0, 3.0, 4.0, 5.0, причем только последняя версия имеет подверсию 5.5. Многие версии до сих пор используются различными энтузиастами и лежат на различных сайтах по сети Интернет.

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


Читать дальше →
Всего голосов 72: ↑70 и ↓2+68
Комментарии272

Балансируя между точностью и производительностью

Время на прочтение6 мин
Количество просмотров11K

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

В компиляторе компании Intel есть набор опций, отвечающих за контроль оптимизаций вычислений над числами с плавающей точкой. Рассмотрим преинтереснейший ключик –fp-model, который, судя по описанию в документации, управляет семантикой вычислений над числами с плавающей точкой. Кстати, стоит отметить, что похожие ключи есть и в других компиляторах, не только Интеловском, об этом мы тоже поговорим. По сути, с помощью данного ключика мы и сможем контролировать баланс между производительностью и точностью вычислений. Возможные значения, которые могут быть указаны в опции –fp-model: precise, fast[=1|2], strict, source, [no-]except (Linux*) or except[-] (Windows*). Давайте разберёмся, что они дают при компиляции нашего кода.
Читать дальше →
Всего голосов 33: ↑29 и ↓4+25
Комментарии14

learnopengl. Урок 2.6 — Несколько источников освещения

Время на прочтение7 мин
Количество просмотров19K
OGL3

Несколько источников освещения


В предыдущих уроках мы выучили довольно много об освещении в OpenGL. Мы познакомились с моделью освещения по Фонгу, разобрались как работать с материалами, текстурными картами и различными типами источника света. В этом уроке мы собираемся объединить все наши знания, чтобы создать полностью освещенную сцену с 6 активными источниками света. Мы собираемся симулировать солнце как направленный источник освещения, добавим 4 точки света, разбросанные по всей сцене, и конечно мы добавим фонарик.

В предыдущих сериях

Часть 1. Начало

  1. OpenGL
  2. Создание окна
  3. Hello Window
  4. Hello Triangle
  5. Shaders
  6. Текстуры
  7. Трансформации
  8. Системы координат
  9. Камера

Часть 2. Базовое освещение

  1. Цвета
  2. Основы освещения
  3. Материалы
  4. Текстурные карты
  5. Источники света

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии1

Learn OpenGL. Урок 2.5 — Источники света

Время на прочтение13 мин
Количество просмотров40K
OGL3

Источники света


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

Начнем урок с направленного источника света, затем перейдем к точечному источнику, который является развитием упомянутого простого метода освещения. В конце рассмотрим, как устроен источник, имитирующий свойства прожектора (спотлайт).
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии0

Выпущена Visual Studio 2019

Время на прочтение4 мин
Количество просмотров77K


Сегодня стала доступна новая версия IDE от Microsoft: состоялся релиз Visual Studio 2019 и её «двоюродной сестры» Visual Studio 2019 for Mac.

Visual Studio находится в немного странном положении, и разработчикам впору спрашивать, почему такой релиз вообще существует.
Читать дальше →
Всего голосов 71: ↑65 и ↓6+59
Комментарии202

«Да ты же просто робот, имитация. Разве может робот написать симфонию?» — интервью о ИИ с Дмитрием Сошниковым, Microsoft

Время на прочтение9 мин
Количество просмотров9K
Разработка элементов систем искусственного интеллекта активно развивается и становится трендом сегодняшнего времени, а умных ботов сейчас и вовсе не пишет только ленивый. Именно поэтому мы взяли интервью у Дмитрия shwars Сошникова, одного из лучших в стране экспертов по ИИ. Он является технологическим евангелистом Microsoft, автором книг, статей и учебных пособий, а также преподавателем и координатором студенческих программ, специалистом по функциональному программированию, нейросетям и искусственному интеллекту.


Читать дальше →
Всего голосов 40: ↑35 и ↓5+30
Комментарии6

Паттерны ООП в метафорах

Время на прочтение17 мин
Количество просмотров558K
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Читать дальше →
Всего голосов 214: ↑201 и ↓13+188
Комментарии86

Синглтон и время жизни объекта

Время на прочтение9 мин
Количество просмотров16K
Эта статья является продолжением моей первой статьи “Использование паттерна синглтон” [0]. Сначала я хотел все, что связано со временем жизни, изложить в этой статье, но объем материала оказался велик, поэтому решил разбить ее на несколько частей. Это — продолжение целого цикла статей про использование различных шаблонов и методик. Данная статья посвящена времени жизни и развитию использования синглтона. Перед прочтением второй статьи настоятельно рекомендуется ознакомиться с моей первой статьей [0].

В предыдущей статье была использована следующая реализация для синглтона:
template<typename T>
T& single()
{
    static T t;
    return t;
}


Функция single возвращала нам заветный синглтон. Однако данный подход имеет изъян: в этом случае мы не контролируем время жизни объекта и он может удалиться в тот момент, когда мы хотим этим объектом воспользоваться. Поэтому следует использовать другой механизм создания объекта, используя оператор new.
Читать дальше →
Всего голосов 30: ↑24 и ↓6+18
Комментарии61

Обращение зависимостей и порождающие шаблоны проектирования

Время на прочтение18 мин
Количество просмотров13K

Аннотация


Это третья статья, просвещенная порождающим шаблонам проектирования и связанным с ними вопросами. Здесь мы рассмотрим излюбленные приемы при создании объектов: фабрики, заводы, абстрактные фабрики, строители, прототипы, мультитоны, отложенные инициализации, а также немного коснемся pimpl идиомы или шаблона “мост”. Использование синглтонов было подробно рассмотрено в первой [1] и второй [2] статьях, однако, как вы увидите в дальнейшем, синглтоны часто используются совместно с другими шаблонами проектирования.
Читать дальше →
Всего голосов 47: ↑43 и ↓4+39
Комментарии42

Забавные компьютерные ошибки

Время на прочтение6 мин
Количество просмотров40K
Следующие забавные и интересные компьютерные (а по сути — человеческие) ошибки когда-то имели место и оставили свой след в мифологии информационных технологий.

Паук смерти


Эта уже старая (примерно 8 лет давности) история прекрасно иллюстрирует, как легко тотальное головотяпство может всё испортить. Джош Брекмэн работал в компании, которая получила крупный заказ на разработку системы управления содержимым для сайта государственной структуры. CMS была нужна для того, чтобы работники могли редактировать контент на сайте. У заказчика уже был крупный сайт, поэтому для переноса старого контента потребовалось какое-то время. Через несколько месяцев новый сайт был готов к запуску.

Всё прошло успешно, и веб-сайт работал без каких-либо проблем. Но через шесть суток весь контент полностью исчез. Остались только стандартные сообщения о пустоте баз данных, призывающие добавить контент на только что созданный сайт. Результат расследования показал, что всё содержимое было удалено с одного IP-адреса.

Злостным хакером оказался не кто-то из-за океана — из Китая, России, Индии или ещё какого-нибудь известного своими недружелюбными хакерами государства. Это был googlebot.com. Нет, компания Google не занимается и занималась взломом сайтов госаппарата для того, чтобы вот так глупо нахулиганить. Как выяснилось позже, участия человека не было в принципе. Вот, что произошло на самом деле:
Читать дальше →
Всего голосов 87: ↑87 и ↓0+87
Комментарии34

Unity выложила исходный C#-код на Github

Время на прочтение2 мин
Количество просмотров38K
image

Возрадуйтесь все, кому хоть раз в силу жизненной необходимости приходилось декомпилировать .NET-код Unity! Теперь код C#-части движка и редактора Unity доступен для изучения на Github. Доступны все основные ветки, начиная с версии 2017.1 и заканчивая свежей 2018.1.0b12.

Код был выложен вчера, официальный анонс состоится только в понедельник.

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

Впрочем, это ничуть не остановило товарища, уже оформившего пулл-реквест с фиксом производительности.
Читать дальше →
Всего голосов 44: ↑43 и ↓1+42
Комментарии40

Gray Hat Python — Immunity Debugger

Время на прочтение17 мин
Количество просмотров17K

Intro


Рассмотрев создание и использования отладчика на чистом Python’е в виде PyDbg, пришло время изучить Immunity Debugger, который состоит из полноценного пользовательского интерфейса и наимощнейшей Python-библиотекой, на сегодняшний день, для разработки эксплойтов, обнаружения уязвимостей и анализа вредоносного кода. Выпущенный в 2007 году, Immunity Debugger имеет хорошее сочетание возможностей как динамической отладки, так и статического анализа. Помимо этого он имеет полностью настраиваемый графический интерфейс, реализованный на чистом Питоне. В начале этой главы мы кратко познакомимся с отладчиком Immunity Debugger и его пользовательским интерфейсом. Затем начнем постепенное углубление в разработку эксплойта и некоторых методов, для автоматического обхода анти-отладочных приемов, применяемых в вредоносном ПО. Давайте начнем с загрузки Immunity Debugger и его запуска.

Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии5

Расширение функциональности Visual Studio

Время на прочтение9 мин
Количество просмотров25K
Дисклэймер

Сразу оговорюсь. Всё написанное здесь исключительно моё имхо. Я могу ошибаться и буду рад, если вы меня поправите :)

Буду использовать жаргонизмы и варваризмы, потому что пишу на русском, а русских аналогов нужных терминов нет или они не совсем точно передают смысл.

Ладно, к делу.

Данная статья имеет задачу в первом приближении проинформировать интересующихся о возможностях расширения функционала Visual Studio — «технологии» Visual Studio Extensibility.

Читать дальше →
Всего голосов 61: ↑43 и ↓18+25
Комментарии21

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность