LINUX.ORG.RU

C++


344

17

Всего сообщений: 21

Портирование на другую ОС

Немного раскрою эту сложную тему на конкретном и реальном примере. В этот раз рассказ будет про современный С++ и сетевой фреймворк Pistache, а портировать будем с Linux на FreeBSD.

Понимаю что надоело, но портирование Linux -> FreeBSD это самый простой вариант из возможных, масштаб других вариантов (например с Windows на Linux) таков что просто не влезет в формат одной статьи.

На скриншоте работающий вебсервис на C++ на веб-фреймворке, портированном с Linux. И все это с поддержкой Swagger!

Для модераторов: если снова не понравится картинка на фоне (я ее называю скромно «Welcome to FreeBSD!») - сообщите комментом и я заменю, не надо сносить в Talks как в прошлый раз.

P.S. Это мой последний материал на ЛОРе, больше не будет. Политика таки вмешалась.

>>> Просмотр (1366x768, 916 Kb)

 , , ,

alex0x08
()

PlayRho: форк «физического движка» Box2D

PlayRho - улучшенный форк знаменитой (свыше 6500 ★) C++ библиотеки Box2D и разрабатываемой Louis Langholtz.

Основные изменения (полный список):

  • переход на C++17;
  • удалено использование глобальных переменных;
  • многие директивы препроцессора заменены возможностями C++;
  • переход на семантику значений вместо семантики ссылок;
  • использование стандартных аллокаторов;
  • добавлена поддержка библиотеки Boost Units.

( читать дальше... )

>>> Просмотр (1920x1050, 2116 Kb)

 , , , ,

dataman
()

Китайский GoldenDict

GoldenDict - замечательный мультиформатный электронный словарь, которым я пользуюсь много лет.

Но у оригинального GoldenDict есть несколько проблем:

  • использует Qt 5 и Qt WebKit;
  • медленное и прожорливое полнотекстовое индексирование словарей.

В попытках исправить положение, китайский программист xiaoyifang развивает свой форк со следующими изменениями:

  • использование Qt WebEngine;
  • возможность использования Qt 6;
  • возможность использования Xapian для полнотекстового поиска.

Полный список изменений.

>>> Просмотр (1920x1050, 276 Kb)

 , , ,

dataman
()

Arch Linux + plainDE

Год назад я начал разработку окружения рабочего стола на C++/Qt. Пока есть только панель и control center.

Целью разработки было легковесное окружение рабочего стола, которое в тоже время имеет широкие возможности кастомизации. Нужна была середина между легковесностью (как у того же LXDE) и кастомизацией, потому что в наиболее распространенных окружениях рабочего стола эти два понятия не сочетаются. В таких случаях обычно используется i3, но для его конфигурации нужно много времени, поэтому важным фактором также было user-friendly UI.

Среди доступных на текущий момент апплетов:

  • меню приложений;
  • список окон;
  • launcher’ы (иконки приложений на панели);
  • индикатор батареи;
  • переключатель рабочих столов;
  • управление воспроизведением (MPRIS);
  • регулятор громкости;
  • индикатор раскладки клавиатуры (флаг или ISO-код);
  • дата/время;
  • меню пользователя (выключение, перезагрузка, сон, настройки);
  • индикатор локального IPv4 адреса;
  • разделитель |;
  • заполнитель (QSpacerItem).

Панелей пока максимально может быть 2 (1 сверху и 1 снизу). Их можно делать нерастянутыми на всю ширину экрана и сдвигать. Из возможностей кастомизации внешнего вида: смена иконок, шрифта, акцента (любой из RGB), темы (их можно писать самому, лежат по пути /usr/share/plainDE/styles) и т.д. Список того, что можно изменить будет непрерывно пополняться. Для упрощения создания тем оформления можно будет их создавать из GUI.

Разработка активно ведется, поэтому есть много планов на будущее: вертикальные панели, написание своего оконного менеджера, поддержка Wayland, файловый менеджер, переход на QML, взаимодействие с сообществом (локализация, апплеты, artwork, …).

Потребление ресурсов в основном зависит от оконного менеджера. Сама панель потребляет не более 20-30 МБ ОЗУ. Дефолтный конфиг (Openbox + plainPanel) без композитного менеджера и pcmanfm –desktop потребляет в среднем 150-160 МБ ОЗУ на виртуальной машине. На нетбуке с 1 ГБ ОЗУ на дистрибутиве Arch Linux 32 результат ~120 МБ ОЗУ.

Мейнтейнер проекта: @ivabus

На скриншоте: Arch Linux, plainDE, pcmanfm, picom.

Иконки: Mint-Y-Legacy.

https://plainde.org/

>>> Просмотр (1280x768, 632 Kb)

 , , ,

thm
()

Managarm

Нашёл интересное микроядро:

  • поддержка 64-bit с SMP и поддержка ACPI;
  • полностью асинхронные микроядро и серверы;
  • поддержка сети;
  • совместимость с POSIX и Linux API (насколько я понял, еще не реализована полностью);
  • поддержка современного железа и устройств таких как контроллеры USB3 (по заявлению на github).

Написано на С++ с использованием идей С++20. Лицензия MIT.

У них на скриншоте даже glxgears работает (мне пока не удалось запустить).

Ещё скриншот (вывод ls /bin)

github

официальный сайт

Как вам, а? И знали ли вы о таком проекте? :)

>>> Просмотр (1027x667, 121 Kb)

 , ,

JustVic
()

Скрутите свою спираль: Spiral Galaxy Renderer

Spiral Galaxy Renderer — приложение, симулирующее вращающиеся спиральные галактики согласно теории волн плотности Линя и Шу.

Исходники

Онлайн-демо

Подробности

>>> Просмотр (1508x2072, 741 Kb)

 , , , ,

dataman
()

shex - мой просмотрщик двоичных файлов. С++, Vulkan, glfw3

Сегодня, наконец, допилил функциональность и решил выложить исходники.

Функциональность минимальная. Можно двигать клавишами вверх, вниз, page up, page down, [shift] + F3-F9, колесом мыши, а так же мышкой двигать линейку прокрутки слева.

Просто потихоньку изучаю Вулкан. Гуй встроен в шейдер.

Всем хорошего дня!

https://github.com/alexkh/shex

>>> Просмотр (600x1067, 56 Kb)

 , , , ,

svyatozar
()

Windows8.1+FreeBSD10.3+Debian8.5 на 4 Гигабайтах

Обычно ничего не выкладываю в галерею, т.к. в ней есть и интереснее картинки чем могу предложить. Впрочем одна тёплая и ламповая на моём счету уже имеется

Прокоментить тут особо нечего, двумониторная среда, слева обычно открыт браузер с документаций, справа код (изучаю Си++ сам по себе, так и делая некоторые вставки в один достотчно хороший проект, в который попал благодаря «Лору» (темка была для тех кто хочет попрактиковаться языку, не думал что такие темки работают, а работают))

а так обычно со скрипом ssd (из-за иногда бывающей нехватки физической памяти и необходимости поработать с pagefile.sys), система стабильно держит Фряху для бложика в котором конспектирую изученное, и для дебиана.

Обоим виртуалкам выделены все 6 ядер CPU, под фряху выделено 640 мегабайт памяти, это более чем хватает для скоромного сервера, который никто, кроме гуглабота и меня не посещает), под дебиан ровно 2000 мегабайт - остальные выделены венде. В винде может работать DC++ и Firefox и все это дело живет на 4 гигибайтах, иногда даже игрушки идут как в дебиане так и хосте.

В дебиане на 2000 мегабайтах даже работает Clion (правда выжирает почти все что угодно, но мне он очень нравится, особенно тем что он хорошо понимает шаблоны, хотя жаль что его разработчики выбрали путь быстрой разработки (работает на джаве), выбрали бы они что другое, возможно в моей виртуалке это IDE чувствовало себя намного уютнее)

А да почему винда. Были времена что на моём компьютере вообще не стояло ничего от MS, но однажды я крепко увлекся фотографией, а нативных аналогов продуктам Adobe для Linux не существует. Только не пишите здесь про the Gimp или Wine :)

>>> Просмотр (2960x1050, 773 Kb)

 , , ,

bonta
()

Рабочее окружение вечного студента: i3, urxct, qtcreator

Вдохновляюсь цитатками и медленно продвигаюсь по пути linux kernel developer.
Давно не мог привести рабочее место в порядок, что-то не нравилось, но сейчас вроде как все устоялось и я решился выложить.

Незашакаленый скрин
Само рабочее окружение

ThinkPad T420
Gentoo, OpenRC, linux 4.1.12
i3-gaps (конфиг)

>>> Просмотр (1600x900, 75 Kb)

 , ,

mersinvald
()

На светлой стороне


Поставил недавно себе FreeBSD 10.1 в качестве десктопа.
Систему запускаю так:
1) login in tty
2) sudo kldload nvidia
3) startx

Благодаря xaoc решил проблему с модулем ядра nvidia.

Логин-менеджер xdm, т.к. slim почему-то не желает грузить сессию.
Очень порадовал новый пакетный менеджер. Примерно 80% софта доступно из бинарников. Скорость установки пакетов просто бешеная. Корневой раздел и хомяк в UFS. Удивительно, но русский язык уже был сразу после установки базовой системы, так что мне не пришлось ничего настраивать. Просто перенес конфиги openbox'а.


Сразу поставил блоб на нвидию 400й серии, встало без проблем, правда каждый раз приходится грузить модуль ядра, хотя прописал его в /boot/loader.conf - подскажите, может кто-нибудь сталкивался?


Параллельно с этим изучаю С++ и clang - компилятор намного функциональнее gcc, в случае ошибок выводит больше полезной информации. Также есть фронтенд gtkmm для C++ Glade в связке с Gtk::Builder очень хорошо экономит время и строчки кода, не нужно описывать все виджеты на языке С++. Просто создается файл Glade, а потом загружается с помощью Gtk::Builder. Удобно.


В качестве оболочки стоит мой любимый Openbox. Есть весь необходимый мне набор программ - к примеру deadbeef, virtualbox.
В качестве развлечений люблю поиграть в OpenArena, supertux, Everlasting summer. Steam завелся без проблем.


Из замеченных минусов
1)Флеш в браузере работает не на всех сайтах.
2)Нужно вручную грузить модуль nvidia.
3) ручное монтирование носителей

Еще скриншоты


Система
gtkmm
game

>>> Просмотр (2704x1050, 596 Kb)

 , , , ,

w1nner
()

Мой редактор уровней, в разработке

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

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

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

В будущем хочу сделать открытый доступ к программе, но не уверен что буду открывать исходники, т.к. скажу честно, боюсь критики )) И самое наверное элементарное здесь, что я не через makefile сделал, а через башскрипты, и один файл main.cpp инклудит все заголовочные файлы и исходный код! Я до этого много работал на дельфи, и пересел на C++ года 2 назад, и когда уже было очень многое написано, я только понял что я налажал, но уже поздно, а все переписывать не очень хочется.
Еще скриншоты:
http://habrastorage.org/files/7b3/c85/958/7b3c85958c004fafbd1200b9aab3abc7.png
http://habrastorage.org/files/f1b/c5e/62a/f1bc5e62a6ea4967abcb5940d0b9e6c5.png
http://habrastorage.org/files/1bf/504/3a4/1bf5043a42c444ba84f5b4c64614ba1f.png

А раньше он выглядел вот так:
http://habrastorage.org/files/667/d86/820/667d86820eb4476ab90bc2e3fd4895c2.png

Виде игры которую я делаю на Haxe, только приступил к работе:
http://www.youtube.com/watch?x-yt-ts=1421828030&x-yt-cl=84411374&v=CO...

>>> Просмотр (1920x1080, 238 Kb)

 ,

Int64
()

Учим С++ в последние дни каникул

Добрый вечер, ЛОР. У меня для вас тот же KDE4, тот же Gentoo. Все же постарался сделать получше, чем предыдущий мой скриншот. Чем я на данный момент занимаюсь? Потихоньку учу С++ по книге Г. Шилдта, в то же время переписываясь в Jabber и слушая приятную музыку.

Итак, что же я сделал с прошлого своего скриншота:

  • Перенес панель влево, аки Unity. Просто потому что так удобнее и места меньше занимает. Трей и часы переехали в правый угол и появляются по наведению мыши.
  • Jabber-клиент заменил на Psi+, так как мультипротокольность мне не нужна. Оказался шустрее и удобнее.
  • Одна крылатая единорожка заменена на другую. (Haters gonna hate!) К сожалению, более высшего разрешения не нашлось, приходится смотреть на растянутый JPEG.
  • Поменял скин у Steam подходящий под цветовую гамму.
  • Clementine пришел на смену DeaDBeeF. Только потому что нужен был быстрый поиск. На деле же еще пригодилась функция музыкальной коллекции, добавлять в общий плейлист стало удобнее.
  • Использую Kate в качестве редактора. Да, никаких заумных vim и прочее, просто очень лень запоминать клавиатурные аккорды, привыкать.
  • PT Sans Caption в качестве основного шрифта.

Два остальных скриншота: Steam, Clementine. И PNG оригинальной для любителей.

И все это работает под KDE 4.10.0 и Linux 3.10.9-geek. А послезавтра мне уже в школу, 10-ый класс. =)

>>> Просмотр (1600x900, 318 Kb)

 , ,

a1batross
()

Дорогая, мы убиваем выходные. Сезон 2.

Пишу ненужно в ненужно под ненужно онтопик. Попалась както на хабропомойке статья про кубик Рубика на WebGL, решил написать сам под обычный OpenGL. ООП головного мозга заставило для такой простой вещи родить 25 классов, что меня малек раздражает.

inb4: Удалено. Причина: дефолт.

UPD: https://github.com/santa01/rubik

>>> Просмотр (1366x768, 425 Kb)

 , ,

x0r
()

Призрак прошлого

Лет 10 назад в качестве самообразования написал я велосипед - менеджер иконок xtdesktop. Иконок было 3 типа - program, mountpoint, plugin, к каждой иконке про правому клику было меню с доп.командами, иконки были таскательны и использовали XShape для красоты.

Несмотря на массу недостатков, проект зажил. Сам я его использовал очень немного, но был пакет для него в Debian и Sisyphus; DSL и Buffalo использовали его по-умолчанию. В Buffalo даже вносили свои изменения. но не делились исходниками. В галерее на LOR есть скрин и несколько упоминаний про xtdesktop, на distrowatch есть пара скриншотов.
Постепенно интерес и необходимость пропали, и про программу я забыл.

И на днях через третьи руки доходит до меня письмо - паренек пишет, мол такое дело, использую регулярно, в т.ч. вместо коньков, но с последними иксами перестало работать. Оказывается, кто-то где-то это еще использует :) Скриншот с ноута.

>>> Просмотр (1024x768, 60 Kb)

 ,

scott_tiger
()

Сансевьера

Сансевьера - многолетнее корневищное вечнозеленое травянистое растение с прямостоячими суккулентными ланцетовидными листьями. Цветет обычно весной, в апреле - мае, маленькими белыми цветками, собранными в кистевидные соцветия. По ночам от них исходит достаточно сильный аромат ванили.

Оно живёт у меня на столе уже много лет, любит читать, в основном словари и техническую литературу, хотя чаще ленится; хорошо уживается с ноутом и основным компом, любит слушать и играть классическую музыку, хотя кроме Бетховена и Вагнера, больше ничего не умеет.

>>> Просмотр (2660x1773, 1309 Kb)

 , ,

iLoveoOz
()

ITE

На скрине будущая ITE(?) - оболочка для организации/создания/поиска/прогона тестов для кода на С и С++, с дополнительной «фишкой» в виде документирования кода навроде doxygen. Сейчас прикручиваю поддержку googletest, если кто что использует другое - просьба написать название, т.к. «движок» тестов будет опциональным.

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

>>> Просмотр (1680x1050, 221 Kb)

 ,

aho
()

[SVG] Велосипед

Нудная предыстория: понадобилась мне библиотека для отрисовки SVG для cairo, на что сразу нагуглилась librsvg, но она тянула «всего-лишь» libxml2, glib и т.п. за собой, что означало не только таскание массы «груза» со собой, но и трах со сборкой всего этого на разных платформах, нагугленные далее QSvg и wxSVG также оптимизма не внушали. В результате за вечер была написана большая часть кода для отрисовки этого самого SVG, который:

а) вместился в 5 относительно небольших файлов( самый большой - «кастрированный» rapid_xml.hpp );
б) не требует ничего абсолютно, кроме стандартного STL и cairo( что логично );
в) на удивление работает быстрее хрома даже в дебажном «виде» ( видимо из-за быстрого rapid_xml ), хотя может у меня неправильный хром - FF большие файлы отрисовывает очень быстро;
г) умеет показывать большие файлы, которые отказывается понимать гномовский eog, который вообще плохо работает со сложными изображениями.
д) более-менее( не полностью ) понимает css.

Собс-но на скриншоте:

- AWN;
- XFWM;
- NetBeans;
- результат работы велосипеда.

П.С. сам код выложу через несколько дней как public domain, после приведения его в порядок и дописывания недостающего.

>>> Просмотр (1680x1050, 291 Kb)

 , , ,

aho
()

Учим C++ ночью

Недавно спрашивал «Что посоветуете для изучения C/C++ » http://www.linux.org.ru/forum/development/4859754/
Из всего предложенного выбрал «Липпман СPP для начинающих», сейчас активно изучаю.
Про скрин: ибо изучение идёт в основном ночью, решил подобрать подходящею тему, готовой не нашел, и решил пилить сам.
Рамки окон:Tactile; Значки G-Flat. Цвета затачивал сам.
P.S. Ещё раз спасибо тем, кто указал мне правильную дорогу в изучении C++))))

>>> Просмотр (1920x1200, 478 Kb)

 , , , , липпман

Ramzes001
()

Почти дефолтный Ubuntu 10.04 +учим C++ :)

В принципе, все ясно с первого взгляда -

Ubuntu 10.04 LTS amd64

Gnome/Compiz-fusion

Conky в 2 экземлярах -так удобнее получилось.

Gnome-terminal, в нем screen, а в нем vim, учу malloc/realloc

Пока вроде удобно, планирую еще допилить немного и будет совсем оно.

З.Ы. Удивило отсутствие проблем при установке/работе ubuntu на моем ноуте - hp pavillion dv6-1330er, на http://Corebug.Net (мой блог) описаны некоторые траблы, которые были при попытке установить другие дистры.

>>> Просмотр (1366x768, 246 Kb)

 , , , ,

Corebug
()

Totem Wars

Привет всем! Раньше хотел написать танчики, простенькую и без наворотов. Так как на данный момент занялся написанием игрушки жанра Tower Defense (http://www.linux.org.ru/gallery/screenshots/4815481), времени на танчики мало, поэтому пишу от случая к случаю...
Если кого-нибудь заинтересует, можете сделать свой вклад в игрушку :)

Сегодня сделано:
- update graphics
- update license to GPLv3
- update documentation
- fixed problems with timer and else problems
- port for Linux
- added new images for future
- added music from Hedgewars

Так как сообщество ЛОРа критично отнеслась к моему предыдущему проекту, в этом комментарии все переведены на английский, и лицензия GPLv3.

Компилируется командой:
# make

Зависимости можете посмотреть в файле DEPENDS, скачать исходники можно по здесь:
http://lorcode.org/forum/viewtopic.php?f=5&t=75

Все замечание/идеи/патчи/бред отправляйте на vzov@ya.ru

>>> Просмотр (1366x768, 474 Kb)

 , , ,

eReSik
()