Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Внутри Quake: определение видимых поверхностей

Работа с 3D-графикой *Разработка игр *Алгоритмы *
Перевод
image

Ветеран программирования трёхмерной графики Майкл Абраш на примере разработки первого Quake рассказывает о необходимости творческого мышления в программировании.

Много лет назад я работал в теперь уже не существующей компании-производителе видеоадаптеров Video Seven. Там я помогал в разработке клона VGA. Мой коллега Том Уилсон, долгие месяцы круглосуточно работавший над разработкой VGA-чипа Video Seven, стремился сделать VGA как можно более быстрым, и был уверен, что его производительность оптимизирована почти по максимуму. Однако когда Том уже вносил в конструкцию чипа последние штрихи, до нас донеслись слухи, что наш конкурент Paradise достиг ещё большей производительности в своём разрабатываемом клоне, добавив в него FIFO.

На этом слухи заканчивались — мы не знали, ни что это за FIFO, ни насколько он помог, ничего другого. Тем не менее, Том, обычно приветливый и расслабленный человек, превратился в активного, одержимого фанатика со слишком большим процентом кофеина в крови. Исходя из этих крупиц информации, он пытался выяснить, что же удалось сделать Paradise. В конце концов он пришёл к выводу, что Paradise вероятно вставил FIFO-буфер записи между системной шиной и VGA, чтобы когда ЦП выполнял запись в видеопамять, записываемые данные сразу же попадали в FIFO, и это позволяло ЦП продолжать обработку, а не простаивать каждый раз, когда он выполнял запись в память дисплея.

У Тома не было ни логических элементов, ни достаточно времени на реализацию полного FIFO, но ему удалось реализовать FIFO глубиной в одну операцию, что позволяло процессору обгонять VGA-чип на одну операцию записи. Том не был уверен, что это даст хорошие результаты, но это было единственное, что он смог сделать, поэтому он реализовал эту систему и передал чип в производство.
Читать дальше →
Всего голосов 87: ↑87 и ↓0 +87
Просмотры 33K
Комментарии 6

Configuration of the Warnings Next Generation plugin for integration with PVS-Studio

Блог компании PVS-Studio Тестирование IT-систем *IT-инфраструктура *Управление разработкой *DevOps *

Picture 4


The PVS-Studio 7.04 release coincided with the release of the Warnings Next Generation 6.0.0 plugin for Jenkins. Right in this release Warnings NG Plugin added support of the PVS-Studio static code analyzer. This plugin visualizes data related to compiler warnings or other analysis tools in Jenkins. This article will cover in detail how to install and configure this plugin to use it with PVS-Studio, and will describe most of its features.
Read more →
Всего голосов 34: ↑33 и ↓1 +32
Просмотры 1.2K
Комментарии 0

Замена дисков меньшего объёма на диски большего объёма в Linux

Блог компании OTUS Настройка Linux *
Всем привет. В преддверии старта новой группы курса «Администратор Linux» публикуем полезный материал, написанный нашим студентом, а также наставником на курсах, специалистом технической поддержки корпоративных продуктов REG.RU — Романом Травиным.



В данной статье будет рассмотрены 2 случая замены дисков и переноса информации на новые диски большего объёма с дальнейшим расширением массива и файловой системы. Первый случай будет касаться замены дисков c одноименной разметкой MBR/MBR либо GPT/GPT, второй случай касается замены дисков с разметкой MBR на диски объёмом более 2 TB, на которые потребуется ставить разметку GPT с разделом biosboot. В обоих случаях диски, на которые переносим данным, уже установлены в сервер. Файловая система, используемая для корневого раздела — ext4.


Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 11K
Комментарии 5

PVS Studio.VS.Статический анализ GCC 10. Независимый минитест

C *Промышленное программирование *
После появления переводной статьи про Статический анализ в GCC 10, и ожидаемой реакции присутствующих здесь представителей разработчика коммерческого статического анализатора PVS-Studio, у меня возник вопрос: «Почему же представители отказываются проверить свой продукт на таких простых примерах для статического анализа, и не скрывают ли они чего?»
Andrey2008 Ды, неинтересно мне это. Поймал/не поймал синтетическую ошибку, это ничего не говорит о возможностях анализатора
Должны же они как то прогонять юнит-тесты своего продукта и как, если не на таких синтетических простых примерах?!

Собственно, пришлось сделать это самому.
Читать дальше →
Всего голосов 33: ↑31 и ↓2 +29
Просмотры 4.9K
Комментарии 15

Checking the Code of DeepSpeech, or Why You Shouldn't Write in namespace std

Блог компании PVS-Studio Программирование *C++ *
DeepSpeech is an open-source speech recognition engine developed by Mozilla. It's pretty fast and ranks high, which makes its source code an interesting target for static analysis. In this article, I'll show you some of the bugs found in DeepSpeech's C++ code.

image1.png

Introduction


We have already scanned a few projects based on machine learning before, so there was nothing new about DeepSpeech to us in this respect. No wonder since the project is quite popular: as of this writing, it has 15k stars on GitHub.
Read more →
Всего голосов 2: ↑1 и ↓1 0
Просмотры 361
Комментарии 0

Анализ кода проекта DeepSpeech или почему не стоит писать в namespace std

Блог компании PVS-Studio Программирование *C++ *
DeepSpeech – это открытый и свободно распространяемый движок распознавания речи, разрабатываемый компанией Mozilla. Движок имеет довольно высокую производительность и хорошие отзывы пользователей, и это делает код проекта интересной мишенью для проверки. Данная статья посвящена разбору ошибок, найденных в C++-коде проекта DeepSpeech.

image1.png

Читать дальше →
Всего голосов 14: ↑11 и ↓3 +8
Просмотры 2.5K
Комментарии 5

C# Programmer, It's Time to Test Yourself and Find Error

Блог компании PVS-Studio Программирование *.NET *C# *

The PVS-Studio analyzer is regularly updated with new diagnostic rules. Curiously enough, diagnostics often detect suspicious code fragments before the end of the work. For example, such a situation may happen while testing on open-source projects. So, let's take a look at one of these interesting finding.

Read more
Рейтинг 0
Просмотры 921
Комментарии 0

C# программист, испытай себя — найди ошибку

Блог компании PVS-Studio Программирование *.NET *C# *

Анализатор PVS-Studio регулярно пополняется новыми диагностическими правилами. Что интересно, часто диагностики обнаруживают подозрительные фрагменты кода еще до окончания всех работ. Например, в процессе тестирования на open-source проектах. Одной из подобных интересных 'находок' и хотелось бы поделиться сегодня с вами.

Read more
Всего голосов 23: ↑23 и ↓0 +23
Просмотры 8K
Комментарии 26

A Spy Undercover: PVS-Studio to Check ILSpy Source Code

Блог компании PVS-Studio Программирование *.NET *C# *

In PVS-Studio, we often check various compilers' code and post the results in our blog. Decompiler programs, however, seem to be a bit neglected. To restore justice in this world, we analyzed the ILSpy decompiler's source code. Let's take a look at the peculiar things PVS-Studio found.

Читать далее
Рейтинг 0
Просмотры 574
Комментарии 0

Шпион под прикрытием: проверяем исходный код ILSpy с помощью PVS-Studio

Блог компании PVS-Studio Программирование *.NET *C# *

В блоге компании PVS-Studio можно найти далеко не одну статью с результатами проверок исходного кода различных компиляторов. С другой стороны, немного обделённым вниманием PVS-Studio кажется другой класс программ - класс декомпиляторов. Дабы сделать мир более гармоничным, был проверен исходный C# код программы ILSpy, как раз относящейся к лагерю декомпиляторов. Давайте же посмотрим, что интересного смог найти PVS-Studio.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 3.6K
Комментарии 3

Pitfalls in String Pool, or Another Reason to Think Twice Before Interning Instances of String Class in C#

Блог компании PVS-Studio Программирование *.NET *C# *

As software developers, we always want our software to work properly. We'll do everything to improve the software quality. To find the best solution, we are ready to use parallelizing or applying any various optimization techniques. One of these optimization techniques is the so-called string interning. It allows users to reduce memory usage. It also makes string comparison faster. However, everything is good in moderation. Interning at every turn is not worth it. Further, I'll show you how not to slip up with creating a hidden bottleneck in the form of the String.Intern method for your application.

Read more
Всего голосов 2: ↑1 и ↓1 0
Просмотры 965
Комментарии 0

Подводные камни в бассейне строк, или ещё один повод подумать перед интернированием экземпляров класса String в C#

Блог компании PVS-Studio Программирование *.NET *C# *

Будучи разработчиками программного обеспечения, мы всегда хотим, чтобы написанное нами ПО работало быстро. Использование оптимального алгоритма, распараллеливание, применение различных техник оптимизации – мы будем прибегать ко всем известным нам средствам, дабы улучшить производительность софта. К одной из таких техник оптимизации можно отнести и так называемое интернирование строк. Оно позволяет уменьшить объём потребляемой процессом памяти, а также значительно сокращает время, затрачиваемое на сравнение строк. Однако, как и везде в жизни, необходимо соблюдать меру – не стоит использовать интернирование на каждом шагу. Далее в этой статье будет показано, как можно обжечься и создать своему приложению неочевидный bottleneck в виде метода String.Intern.

Читать далее
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 4.9K
Комментарии 9

Roslyn API: Why PVS-Studio Was Analyzing the Project So Long

Блог компании PVS-Studio API *Управление разработкой *

How many of you have used third-party libraries when writing code? It's a catchy question. Without third-party libraries the development of some products would be delayed for a very, very long time. One would have to reinvent the wheel to solve each problem. When you use third-party libraries you still stumble upon some pitfalls in addition to obvious advantages. Recently PVS-Studio for C# has also faced one of the deficiencies. The analyzer could not finish analyzing a large project for a long time. It was due to the use of the SymbolFinder.FindReferencesAsync method from the Roslyn API in the V3083 diagnostic.

Read more
Всего голосов 2: ↑1 и ↓1 0
Просмотры 324
Комментарии 0

Roslyn API, или из-за чего PVS-Studio очень долго проект анализировал

Блог компании PVS-Studio API *Управление разработкой *

Многие ли из вас использовали сторонние библиотеки при написании кода? Вопрос риторический, ведь без применения сторонних библиотек разработка некоторых продуктов затягивалась бы на очень-очень большое время, потому что для решения каждой проблемы приходилось бы "изобретать велосипед". Однако в использовании сторонних библиотек кроме плюсов имеются и минусы. Один из этих минусов недавно коснулся и анализатора PVS-Studio для C#. Анализатор долгое время не мог закончить анализ большого проекта из-за использования метода SymbolFinder.FindReferencesAsync из Roslyn API в диагностике V3083.

Read more
Всего голосов 9: ↑7 и ↓2 +5
Просмотры 1.9K
Комментарии 2

Интеграция PVS-Studio в uVision Keil

C++ *C *Программирование микроконтроллеров *

Я занимаюсь разработкой для встраиваемых систем (в основном, под STM32 и Миландр), в качестве основной среды я использую uVision Keil. И, поскольку пишу я на С и С++, уже долгое время меня мучает вопрос – правильно ли я пишу код? Можно ли так?


Не, он конечно компилируется, но это же С++, язык, где «program is ill-formed, no diagnostic required» — это норма.


Соответственно, на протяжении нескольких лет я донимал руководство просьбами купить нам лицензию PVS-Studio и, наконец, когда моя просьба неожиданно совпала с моментом, когда нужно было срочно потратить выделенные на закупку ПО деньги, нам ее все-таки купили!


Радости моей с одной стороны не было предела, но с другой оказалось, что не все так хорошо; сходу PVS-Studio встраивается только в Visual Studio (что порадовало отдел разработки под десктопы) и продукты от Jetbrains (CLion, Rider, Idea, Android Studio), для некоторых других систем сборки тоже предусмотрены готовые сценарии, а вот для Keil’a заявлена только поддержка компилятора – и все. А значит, нужно заниматься интеграцией. Кто будет этим заниматься? Ну, мне же больше всех надо…


Читать дальше →
Всего голосов 24: ↑22 и ↓2 +20
Просмотры 2.3K
Комментарии 5

Creating Roslyn API-based static analyzer for C#

Блог компании PVS-Studio Программирование *.NET *Visual Studio *C# *
Tutorial

After you read this article, you'll have the knowledge to create your own static analyzer for C#. With the help of the analyzer, you can find potential errors and vulnerabilities in the source code of your own and other projects. Are you intrigued? Well, let's get started.

Read more
Всего голосов 2: ↑1 и ↓1 0
Просмотры 1.2K
Комментарии 0

Создание статического анализатора для C# на основе Roslyn API

Блог компании PVS-Studio Программирование *.NET *Visual Studio *C# *
Tutorial

После прочтения этой статьи вы будете обладать знаниями для создания своего собственного статического анализатора для C# кода, благодаря ему вы сможете найти потенциальные ошибки и уязвимости в исходном коде своих и не только проектов. Заинтригованы? Что ж, давайте начнём.

Читать далее
Всего голосов 17: ↑16 и ↓1 +15
Просмотры 4.6K
Комментарии 2

How a PVS-Studio developer defended a bug in a checked project

Блог компании PVS-Studio C++ *

The PVS-Studio developers often check open-source projects and write articles about that. Sometimes, when writing an article, we come across interesting situations or epic errors. Of course, we want to write a small note about it. This is one of those cases.

Read more
Всего голосов 2: ↑1 и ↓1 0
Просмотры 327
Комментарии 0

Как один разработчик PVS-Studio защищал баг в проверяемом проекте

Блог компании PVS-Studio C++ *

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

Читать далее
Всего голосов 26: ↑23 и ↓3 +20
Просмотры 8.2K
Комментарии 17
1