Обновить
296.48

Linux *

Пишем под *nix

Сначала показывать
Порог рейтинга
Уровень сложности

OpenSceneGraph: Групповые узлы, узлы трансформации и узлы-переключатели

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

Введение


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

Развитие программных инструментов, реализующих трехмерную графику пришло, вне зависимости от того, какой из них вы выбираете, примерно к одинаковой концепции как математического, так и алгоритмического описания вышеупомянутых трансформаций. Идеологически и «чистые» графические API типа OpenGL, и крутые игровые движки типа Unity и Unreal, используют схожие механизмы описания преобразования трехмерной сцены. Не является исключением и OpenSceneGraph.

В этой статье мы сделаем обзор механизмов группировки и трансформации трехмерных объектов в OSG.
Читать дальше →

OpenSceneGraph: Основы работы с геометрией сцены

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

Введение


OpenGL, являющийся бэкэндом для OpenSceneGraph, использует геометрические примитивы (такие как точки, линии, треугольники и полигональные грани) для построения всех объектов трехмерного мира.

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

Кроме того, OpenGL может использовать механизм так называемых дисплейных списков, когда однажды подготовленные в видеопамяти примитивы могут использоваться повторно, что существенно ускоряет отображение статических объектов.

По-умолчанию OSG использует метод массивов вершин и метод дисплейных списков для рендеринга геометрии. Однако, стратегия рендеринга может быть изменена, в зависимости от того, каким образом представлены данные о геометрии. В этой статье мы рассмотрим базовые приемы работы с геометрией в OSG.
Читать дальше →

Red Hat Enterprise Linux 8 Beta – одновременно со всем миром

Время на прочтение5 мин
Охват и читатели16K
Открываем Red Hat Enterprise Linux 8 Beta – одновременно со всем миром!



И прежде, чем мы перейдем к представлению важных изменений и новых возможностей, скажем главное – разработчики могут начать тестировать наше новое чудо при помощи Red Hat Developer Program.
Читать дальше: Red Hat Enterprise Linux 8 Beta

OpenSceneGraph: Граф сцены и умные указатели

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

Введение


В прошлой статье мы рассмотрели сборку OpenSceneGraph из исходников и написали элементарный пример, в котором в пустом фиолетовом мире висит серый самолет. Согласен, не слишком впечатляет. Однако, как я говорил раньше, в этом маленьком примере присутствуют главные концепции, на которых основан данный графический движок. Рассмотрим их подробнее. В ниже приведенном материале использованы иллюстрации из блога Александра Бобкова об OSG (жаль, что автор забросил писать об OSG...). Статья базируется так же на материале и примерах из книги OpenSceneGraph 3.0. Beginner’s Guide

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

OpenSceneGraph: сборка из исходников и Hello World

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


Введение


OpenSceneGraph (далее OSG) — открытый кроссплатформенный фреймворк, написанный на C++ и представляющий собой графический движок, предоставляющий программисту объектный интерфейс к OpenGL. В нашей стране этот движок не особенно популярен, даже на Хабре я видел только одну более-менее приличную публикацию о нем. OSG применяется за рубежом много где, например он является основой для свободного авиасимулятора FlightGear, существует открытая реализация игры Morrowind, называемая OpenMW разработка которой так же перенесена на OSG с движка Ogre. Русскоязычной документации по нему исчезающе мало, а среди англоязычной можно отметить лишь серию книг от разработчиков: OpenSceneGraph 3.0. Beginner’s Guide и OpenSceneGraph 3. Cookbook.

Тем не менее, движок достаточно интересен по следующим причинам:

  1. Открытая кроссплатформенная реализация на C++.
  2. Модульная архитектура.
  3. Расширяемость за счет встроенной системы плагинов.
  4. Возможность многопоточной обработки графических данных и встроенный инструментарий для её реализации
  5. Управление динамической памятью через механизм умных указателей

Думаю, что читателям Хабра будет интересно более подробно ознакомится с этим проектом. Не лишним будет и пополнение русскоязычной базы знаний по OSG. Все материалы, которые будут публиковаться мной по данной теме основаны на книге OpenSceneGraph 3.0. Beginner’s Guide, но являются не её переводом, а скорее творческой переработкой изложенного там материала. Если вам интересна данная тема, прошу под кат
Читать дальше →

Как мы перевели 10 миллионов строк кода C++ на стандарт C++14 (а потом и на C++17)

Время на прочтение7 мин
Охват и читатели51K
Некоторое время назад (осенью 2016), при разработке очередной версии технологической платформы 1С:Предприятие внутри команды разработки встал вопрос о поддержке нового стандарта C++14 в нашем коде. Переход на новый стандарт, как мы предполагали, позволил бы нам писать многие вещи элегантней, проще и надежней, упрощал поддержку и сопровождение кода. И в переводе вроде бы нет ничего экстраординарного, если бы не масштабы кодовой базы и специфические особенности нашего кода.

Для тех кто не знает, 1С:Предприятие – это среда для быстрой разработки кросс-платформенных бизнес-приложений и runtime для их выполнения в разных ОС и СУБД. В общих чертах в состав продукта входят:


Мы стараемся по максимуму писать один код для разных ОС — кодовая база сервера общая на 99%, клиента — примерно на 95%. Технологическая платформа 1С:Предприятие преимущественно написана на C++ и ниже приведены приблизительные характеристики кода:

  • 10 миллионов строк С++ кода,
  • 14 тысяч файлов,
  • 60 тысяч классов,
  • полмиллиона методов.

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

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

Борьба за ресурсы, часть 5: Начиная с нуля

Время на прочтение6 мин
Охват и читатели9K
Продолжаем изучать cgroups. В Red Hat Enterprise Linux 7 они задействуется по умолчанию, поскольку здесь используется systemd, а он, в свою очередь, имеет уже встроенные cgroups. С Red Hat Red Hat Enterprise Linux 6 все немного иначе. На самом деле контроллеры cgroups изначально были и там, а вышла эта версия, напомним, в январе 2010 года, то есть пару столетий назад в пересчете на компьютерные годы.



Однако cgroups в Red Hat Enterprise Linux 6 и сегодня на многое способны, что мы сегодня и проиллюстрируем.
Читать дальше: Начиная с нуля

Как написать расширение для GNOME Shell: режим «Do Not Disturb»

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

Началось все с переезда на новую версию одного дистрибутива Linux, а там — скандально известный GNOME Shell (GH для краткости), на Javascript. Ну ок, на JS так на JS, работает — и ладно.


Одновременно с этим темп моей работы давно уже требовал найти нормальный почтовик, вместо тормозящей и жрущей тонны мегабайт вкладки outlook.office.com в браузере. И вот нашел, в наше время есть несколько почти прекрасных кандидатур, одна беда — почтовик стал доставать меня уведомлениями о новых письмах — и звуком, и всплывающими надписями.


Что делать? Решение написать расширение "Не беспокоить" пришло не сразу, очень не хотелось писать велосипед и/или увязнуть в разработке/коде/тоннах ошибок, но решился, и вот хочу поделиться с Хабром своим опытом.1


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

Электронная подпись ГОСТ Р 34.10 документов формата PDF в офисном пакете LibreOffice

Время на прочтение10 мин
Охват и читатели23K
Пришла пора, несмотря на все пожары, исполнить свой гражданский долг – заплатить налоги. Платить налоги мы будем через портал Госуслуги. В личный кабинет портала Госуслуг будем входить с помощью электронной подписи (терминология портала Госуслуг ), т.е. имея на руках сертификат, полученный в аккредитованном удостоверяющем центре (УЦ), и закрытый ключ. И то и другое я храню на токене PKCS#11 с поддержкой российской криптографии:
Читать дальше →

TrustZone: доверенная ОС и ее приложения

Время на прочтение10 мин
Охват и читатели9.6K
В прошлых статьях мы рассматривали аппаратное устройство TrustZone и работу механизма Secure Monitor. Сегодня речь пойдет о доверенной ОС (TEE) и ее приложениях. И если прошлый раз были довольно низкоуровневые вещи, сейчас все будет на вполне высоком уровне — на уровне операционной системы.
Читать дальше →

Подборка докладов по ядру Linux с Open Source Summit Europe 2018

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


На прошлой неделе в Эдинбурге (Шотландия) прошел европейский Open Source Summit 2018. Представляю вашему вниманию подборку интересных докладов по ядру Linux, на которых мне удалось поприсутствовать.

Red Hat будет поглощен IBM

Время на прочтение2 мин
Охват и читатели69K
image
Фото offerov.net

Судьба так распорядилась, что нам суждено стать свиделями еще одного крупного поглощения за этот год.

Red Hat Software, американская компания, выпускающая решения на основе свободной операционной системы Linux и другие программные продукты и услуги на основе открытого исходного кода, потеряет самостоятельность. Тут сразу по масштабности, эпичности и значимости сделки вспоминается похожая история из 2009 года о том, как "Oracle проглотила Sun". Та сделка имела весьма удручающие последствия. Интересно, чем все обернется на этот раз?
hdfan2: Сказка про Красную Шапочку на новый лад.
Компания IBM объявила о достижении соглашения о покупке компании Red Hat. Из пресс-релиза можно сделать вывод, что IBM приобрела Red Hat как поставщика «облачных решений» на базе открытых технологий и включает его в состав своего подразделения по «гибридному облаку» как самостоятельное подразделение. Это будет крупнейшее приобретение в истории IBM, отмечает Reuters.

Согласно сообщению, стороны достигли окончательного соглашения, предусматривающего покупку IBM всех эмитированных акций Red Hat по цене $190 за штуку, представляющих общую стоимость предприятия приблизительно в $34 миллиарда. На торгах в пятницу, 26 октября, на NYSE последняя сделка с акциями Red Hat была заключена по цене $117, а рыночная капитализация компании составила $20,53 миллиарда. Таким образом IBM приобретает Red Hat по цене на 60-процентов выше рыночной оценки. Для справки, капитализация IBM на данный момент составляет около 113.9 миллиарда долларов.
Читать дальше →

Портирование COM на Linux

Время на прочтение4 мин
Охват и читатели20K
Мне нравится технология COM. Но речь пойдет не о технологии, восхвалении или недостатках COM, а опыте переноса и реализации на Linux. Велосипед? Целесообразность?
Читать дальше →

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

Кровавая Лола на Omega 2 или душим питона на Хэллоуин

Время на прочтение3 мин
Охват и читатели5.5K
Никогда не понимал этот праздник. Но идея родилась. Сделать жуткую куклу, которая будет сверкать глазками и жуткие звуки издавать.

imageПод это все подвернулась классная детская голова (спасибо Антон) и конкурс от Onion с розыгрышем специальных китов, купить которые мне таки не позволяет совесть. Раз так, то мозги девочке Лоле я сделал на Omega 2, использовав свои наработки из прошлой статьи.

Всем кому интересно, как такое дело повторить, прошу под кат.
Читать дальше →

Борьба за ресурсы, часть 4: Замечательно выходит

Время на прочтение5 мин
Охват и читатели7.3K
Разберемся с регуляторами подсистемы хранения данных и посмотрим, что они позволяют делать в смысле блочного ввода-вывода.



Особенно интересно здесь то, что мы вступаем на территорию, где изменения настроек, которые вносятся уже после запуска системы, гораздо менее важны, чем решения, которые принимаются еще до ее развертывания.
Читать дальше: Замечательно выходит

Чем заняться процессору, когда нечего делать?

Время на прочтение5 мин
Охват и читатели19K
Разумно было бы предполагать, что для ядра довольно легко будет ничего не делать – но это не так. На конференции Kernel Recipes 2018 Рафаэль Высоцкий рассказал о том, чем занимаются процессоры, когда им нечего делать, как это обрабатывает ядро, какие у текущей стратегии есть проблемы, и как его недавняя работа над циклом бездействия улучшила ситуацию с энергопотреблением систем, которые ничего не делают.

Цикл бездействия, одна из подсистем ядра, которую поддерживает Высоцкий, управляет тем, что делает CPU, когда ему не нужно исполнять никаких процессов. Высоцкий очень точно дал все определения: CPU – это такая сущность, которая может принимать инструкции из памяти и выполнять их одновременно с другими сущностями в той же системе, занимающимися тем же самым. На простейшей однопроцессорной системе с одним ядром этим ядром является CPU. Если у процессора несколько ядер, то каждое из этих ядер – CPU. Если у каждого из ядер есть несколько интерфейсов для одновременного исполнения инструкций – Intel называет такую систему "гиперпоточностью" – тогда каждый из этих потоков будет CPU.
Читать дальше →

Можно ли закрыть обратно открытый исходный код?

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


Эта концепция кажется довольно простой для любого человека, некоторое время работавшего с открытым исходным кодом: проект, однажды выпущенный в виде открытого кода, остаётся открытым навсегда. Конечно, разработчик может решить, что будущие версии проекта будут закрытыми, и иногда такое случалось, но то, что уже выпущено на свободу, отозвать обратно не получится. У интернета нет кнопки «удалить»; опубликовав свой код, и дав миллионам людей потенциальную возможность скачать его, загнать джина обратно в бутылку не получится.

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

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

Нейросеть для разработчиков C++

Время на прочтение7 мин
Охват и читатели53K
Всем привет.

Написал библиотеку для обучения нейронной сети. Кому интересно, прошу.
Читать дальше →

Code of Conduct: почему разработчики ядра Linux угрожали удалить свой код — разбираемся в конфликте

Время на прочтение4 мин
Охват и читатели62K
В сентябре совет директоров Linux Foundation принял новый кодекс поведения для разработчиков ядра Linux — Code of Conduct (CoC). По задумке авторов, он должен был решить проблемы, связанные с дискриминацией, и улучшить эмоциональную обстановку среди разработчиков.

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

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

Microsoft присоединяется к Open Invention Network и «раздает» лицензии на 60 000 своих патентов

Время на прочтение3 мин
Охват и читатели11K
image
Иллюстрация zdnet.com

Microsoft присоединяется к Open Invention Network, предоставляя в общий пул около 60 000 патентов. Новость об этом была опубликована 10 октября 2018 года в блоге корпорации-монополиста на рынке десктопных операционных систем.

Open Invention Network, OIN — это организация (и сообщество владельцев патентов вокруг нее), которая владеет патентами на программное обеспечение вселенной GNU/Linux. Целью OIN является защита Linux и других свободных программных продуктов от патентных исков. Участники сообщества передают патенты в общий пул, позволяя бесплатное использование этих патентов всем участникам на основе royalty-free лицензии.

OIN насчитывает около 2500 участников, среди которых можно выделить такие крупные компании как IBM, SUSE, Red Hat, Google, Novell, Philips, Sony. Примечательным фактом оказалось то, что с 2014 года одним из лицензиатов патентного пула OIN является ReactOS Foundation. В свете новых событий можно сделать вывод, что вероятность патентных претензий со стороны Microsoft к проекту ReactOS стала крайне мала.