Это заметка о любви. О любви статического анализатора кода PVS-Studio к замечательной открытой операционной системе Linux. Эта любовь молода, трогательная и ранима. Этой любви нужно помочь укрепиться. Вы поможете, если заранее запишитесь в добровольцы для тестирования beta-версии PVS-Studio for Linux.
Читать полностью »
Рубрика «c++» - 148
PVS-Studio признаётся в любви к Linux
2016-07-28 в 14:17, admin, рубрики: C, c++, clang, gcc, linux, pvs-studio, PVS-Studio for Linux, PVS-Studio для Linux, Блог компании PVS-Studio, Разработка под Linux, Си, статический анализ кода, статический анализатор кодаUndo и Redo — анализ и реализации
2016-07-27 в 8:33, admin, рубрики: .net, C#, c++, qt, redo, undo, UndoRedo, Анализ и проектирование системПривет! В связи со своей реальной задачей проанализировать возможности Qt и .NET для реализации так называемых «Назад» (Undo) и «Вперёд» (Redo), цель которых отменить действие и отменить отмену соответственно, я решил все свои мысли, идеи и задумки развернуть в этой статье, даже если они будут частично или совсем неверными (поэтому по возможности и интересу пишите в комментарии свои замечания). Хоть и на просторах Интернета спокойно можно найти хорошие (и не очень) библиотеки и примеры реализаций, более общего представления на эти вещи я нашёл не так скоро, да и то, только в ответе на StackOverflow, а этого было мне не достаточно. Во всём найденном есть моменты, которые меня порадовали, есть и которые огорчили. Пожалуй, стоит отменить все печали и радости… чтобы к ним снова вернуться… «Назад… в будущее»!
Интересно? Добро пожаловать!
Читать полностью »
Сообщество экспертов, совместная работа над проектами и другие обновления платформы FlyElephant
2016-07-27 в 6:51, admin, рубрики: big data, blender, c++, docker, FlyElephant, gcc, gromacs, HPC, java, Julia, jupyter, Microsoft Azure, octave, OpenFOAM, openmp, python, R, SciLab, Блог компании FlyElephant, высокая производительность, научные расчёты, Облачные вычисления, параллельное программирование, стартапы
Команда FlyElephant рада анонсировать релиз платформы FlyElephant 2.0, в который вошли следующие обновления: внутреннее сообщество экспертов, совместная работа над проектами, публичные задачи, поддержка Docker и Jupyter, новое хранилище данных и работа с HPC кластерами.
FlyElephant — платформа для исследователей данных, инженеров и ученых, которая предоставляет готовую вычислительную инфраструктуру для проведения высокопроизводительных вычислений и рендеринга, помогает находить партнеров и совместно работать над проектами, а также управлять всеми ресурсами из одного места. Платформа состоит из 3-х основных компонентов:
- Compute. Быстрый доступ к вычислительному кластеру в облаке с нужным программным обеспечением или HPC кластеру, а также автоматизация проведения расчетов.
- Collaborate. Совместная работа над проектами и сообщество экспертов, где можно найти партнеров, чтобы вместе решить сложную задачу или получить квалифицированную консультацию.
- Manage. Управление лицензиями, программным обеспечением, вычислительными ресурсами, шаблонами, алгоритмами, данными и результаты в одном месте.
Среди нововведений отметим следующие:
Читать полностью »
Желания сбываются: интересные Си++ конференции России
2016-07-27 в 6:16, admin, рубрики: C, c++, c++11, C++14, Блог компании PVS-Studio, желания, конференции, конференция, С++Как известно весь ужас жизни в том, что мечты сбываются. Беда в том, что сбываются они не так, как хотелось. Однако в это раз я, видимо, правильно подошел к загадыванию желания, правильно визуализировал его и даже сформулировал письменно — "Хочу свой Луна-Парк с Fortran и Си". И вот свершилось: я могу заявить, что в России стабильно начали проводиться конференции по тематики Си++. Их организатором является замечательный человек — Сергей Платонов. В этой заметке я хочу выразить ему благодарность и порекламировать очередное мероприятие: C++ Siberia 2016, которое пройдет 26-27 августа в Технопарке Новосибирского Академгородка.
Читать полностью »
Представление движений в 3D моделировании: интерполяция, аппроксимация и алгебры Ли
2016-07-26 в 8:44, admin, рубрики: 3d графика, c++, cad, CAD/CAM, cam, алгебра, вращение объектов, группы ли, движения, интерполяция, математика, матрицыВ этой статье мне бы хотелось рассказать об одном интересном математическом приеме, который будучи весьма интересным и полезным мало известен широкому кругу людей, занимающихся компьютерной графикой.
Сколько существует разных способов представить обыкновенный поворот в трехмерном пространстве? Большинство людей, когда-либо занимавшихся 3D-графикой или 3D-моделированием, сходу назовут три основных широко распространенных варианта:
- Матрица поворота 3x3;
- Задание поворота через углы Эйлера;
- Кватернионы.
Люди с богатым опытом добавят сюда почему-то не пользующийся популярностью четвертый пункт:
- Ось поворота и угол.
Мне бы хотелось рассказать о пятом способе представления вращений, который симпатичен тем, что удобен для параметризации, позволяет эффективно строить полиномиальные аппроксимации этих параметризаций, проводить сферическую интерполяцию, и главное, универсален — с минимальными изменениями он работает для любых видов движений. Если вам когда-либо был нужен метод, который позволял бы легко сделать «аналог slerp, но не для чистых вращений, а для произвольных движений, да еще и с масштабированием», то читайте эту статью. Читать полностью »
Решаем проблемы с RAII у std::thread: cancellation_token как альтернатива pthread_cancel и boost::thread::interrupt
2016-07-25 в 9:36, admin, рубрики: boost, c++, pthread_cancel, raii, многопоточностьСтатья рассматривает проблемы в std::thread, попутно разрешая древний спор на тему "что использовать: pthread_cancel, булев флаг или boost::thread::interrupt?"
Проблема
У класса std::thread, который добавили в C++11, есть одна неприятная особенность — он не соответствует с идиоме RAII (Resource Acquisition Is Initialization). Выдержка из стандарта:
30.3.1.3 thread destructor
~thread();
If joinable() then terminate(), otherwise no effects.
Чем нам грозит такой деструктор? Программист должен быть очень аккуратен, когда речь идёт об разрушении объекта std::thread
:
void dangerous_thread()
{
std::thread t([] { do_something(); });
do_another_thing(); // may throw - can cause termination!
t.join();
}
Троллейбус из буханки или alias analysis в LLVM
2016-07-24 в 12:37, admin, рубрики: alias analysis, C, c++, LLVM, алиасинг, выстрелить в ногу, КодоБред, Компиляторы, ненормальное программирование, никто не читает тегиВ преддверии очередной конференции C++ Siberia, я решил выложить на всеобщее оборзрение запись доклада с февральской конференции C++ Russia, проходившей в городе-герое Санкт-Петербурге.
Зачастую, знакомство с алиасингом в C++ у многих программистов начинается и заканчивается одинаково: -fno-strict-aliasing. На вопросы новичка, более опытные коллеги отвечают в стиле: «не трогай! а то все сломаешь!». Новичок и не трогает.
В докладе была сделана попытка заглянуть под капот компилятора и понять, что же там, внутри. Что такое алиасинг, где он может быть полезен и какие реальные преимущества дает. Тема была рассмотрена и со стороны программиста и со стороны разработчика компилятора. А по сему, вопрос «зачем?» был центральным.
В докладе вы найдете:
- Код Quake3
- Магическую константу 0x5F3759DF
- Много ассемблера
- Много IR кода LLVM
- Rust, Java и даже Fortran
Машинное обучение с помощью TMVA (ROOT)
2016-07-22 в 12:29, admin, рубрики: c++, machine learning, машинное обучениеВ последние пару лет только и слышно о том, что Python и scikit-learn являются неким золотым стандартом в data science. В то же время многие профессиональные разработчики жалуются, что в Python кривой способ обращения к базовым классам и т.п. И вообще им не нравится, что нельзя заниматься машинным обучением на родном C++.
Об одной из библиотек, написанных на С++, я и хотел бы рассказать.
Команда PVS-Studio готовит технический прорыв, ну а пока перепроверим Blender
2016-07-21 в 8:25, admin, рубрики: blender, blender 3d, C, c/c++, c++, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, спойлер, статический анализ кодаСтатический анализ наиболее полезен при регулярных проверках. Особенно для таких активно развивающихся проектов как Blender. Пришло время проверить его вновь, и узнать, какие подозрительные места удастся найти на этот раз.
Введение
Blender — профессиональный пакет для создания трёхмерной компьютерной графики, включающий в себя средства моделирования, анимации, рендеринга, постобработки и монтажа видео со звуком, также использующийся для создания интерактивных игр.
Проект уже проверялся ранее. Результаты проверки версии 2.62 изложены в статье "Проверка проекта Blender с помощью PVS-Studio".
Со времени прошлой проверки размер исходного кода вместе с дополнительными библиотеками увеличился до 77 мегабайт. А его объём вырос до 2206 KLOC. На момент предыдущей поверки размер проекта составлял 68 мегабайт (2105 KLOC).
Читать полностью »
Релиз CLion 2016.2: удаленная отладка, поддержка формата Doxygen, новые возможности кодогенерации и многое другое
2016-07-20 в 14:59, admin, рубрики: C, c++, CLion, code generation, cross-platform, debug, IDE, jetbrains, Блог компании JetBrains, ПрограммированиеПривет!
Чуть больше года прошло с момента первого релиза нашей кросс-платформенной IDE для разработки на C и C++. За это время у нас появились десятки тысяч пользователей, среди клиентов встречаются такие организации, как NASA и AirBnB, а самый популярный запрос в трекере набрал более 500 голосов. И кстати, мы не зря просим вас голосовать за те запросы, которые вам наиболее интересны или актуальны. Наша очередь задач на разработку зависит от вашего мнения и ваших голосов в первую очередь. Именно поэтому релиз 2016.2 включает в себя так много долгожданных возможностей!
А теперь обо всем по порядку.
Читать полностью »