LINUX.ORG.RU

Избранные сообщения Mixail

Тестирую компиляцию описания формата Kaitai Struct в диаграмму GraphViz

Галерея — Скриншоты

Сделали новую фичу в Kaitai Struct: раньше мы умели описания бинарных форматов файлов и пакетов смотреть в визуализаторе и компилировать в исходный код парсера на поддерживаемых языках программирования (к ним, кстати, медленно, но верно добавляются PHP и Perl), а теперь мы умеем еще и генерировать по описаниям форматов вот такие вот диаграммы.

На скриншоте - развернутая на фул-скрин схема базовых тестовых форматов стека OSI 2-4 уровней. Все начинается с pcap-файла (вне уровневой классификации), в который вложены фреймы формата Ethernet (2 уровень), в которые вложены IPv4-пакеты (3 уровень), в которые вложены либо TCP-сегменты (4 уровень), либо ICMP-пакеты (3 уровень). Таблички - классы. Жирные стрелки - включения типов один в другой, серые дуги - использования значений из какого-то поля в другом.

В правом верхнем углу - для сравнения - окошко с текстовым редактором, в котором видно, как выглядит исходник описания формата pcap в .ksy.

Схема получена абсолютно автоматически без каких-либо ручных правок и дорисовываний ровно за 2 шага:

1. Пачка файлов с описаниями форматов .ksy компилируется в graphviz:

ksc -t graphviz файлы.ksy

2. Полученный dot-файл банально обрабатывается graphviz:

dot -Tsvg <файл.dot -o файл.svg

Если стало интересно, вот еще пачка примеров:

>>> Просмотр (3840x2160, 223 Kb)

 kaitai, ,

GreyCat
()

Divinity Original Sin Enhanced Edition @ Mesa r600g

Галерея — Скриншоты

Я таки заставил эту игру работать 😊

В процессе была куча сегфолтов и адовые артефакты.

По сути проблемы всего три (конкретно для r600g, в целом для месы – 2):

  1. Контекст OpenGL 4.2. Драйвер r600g рапортует версию 3.3, а движок игры, в свою очередь, работает по принципу segfault driven error handling. Решается просто:
    MESA_GL_VERSION_OVERRIDE=4.2 
    MESA_GLSL_VERSION_OVERRIDE=420
  2. Невалидные шейдеры. Тут сразу:
    • Во-первых, разрабы используют расширение ARB_shading_language_include, которое не поддерживается ничем кроме невидиевской проприетарщины. Но во имя амдшной проприетарщины они запилили в движок fallback режим, в котором это расширение реализуется прямо в движке на коленке, однако включается этот fallback режим (немного) через жопу – они (только) проверяют возвращаемое значение функции glXGetProcAddressARB на nullptr. А glXGetProcAddressARB не обязан возвращать nullptr, кроме адреса надо смотреть еще в список расширений, чего они не делают, а месовская реализация никогда не возвращает nullptr -> segfault driven error handling. Чинится этот баг подстановкой костыля в LD_PRELOAD.
    • Во-вторых, в шейдерах постобработки SMAA/FXAA у них где-то в дебрях кода обложенное ifdef'ами лежит включение очередного расширения, что, блджад, не правильно. После обнаружения этой фигни месовский GLSL компилятор совершенно справедливо прерывает компиляцию, а так как ребята не умеют в обработку ошибок — см. выше. Этот баг обходится с помощью месовского механизма подмены шейдеров в рантайме и костыля-решейпера их кода шейдеров. файла drirc, в который нужно добавить
      <application name='Divinity Original Sin Enhanced Edition' executable='EoCApp'>
          <option name='allow_glsl_extension_directive_midshader' value='true' />
      </application>
  3. Графические артефакты. У них в движке (насколько я понял) есть две принципиально разные ветки кода/рендеринга, которые разделяются по (внимание!) строке в GL_VENDOR: если в этой строке что угодно кроме "ATI Technologies Inc.", то активируется невидиевская ветвь, что на месе приводит к аду, если же доставить в LD_PRELOAD еще один костыль с этой строкой, то рендеринг становится мягким и шелковистым.

TL;DR: Gentoo, дефолтные кеды, ШГ, панелька с автоскрытием.

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

 ,

Stil
()

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

Галерея — Скриншоты

Пишу вот редактор уровней, 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
()

Вышла версия 0.97 VCMI - открытого движка, совместимого с Heroes of Might and Magic III

Новости — Игры
Группа Игры

Вышла новая версия 0.97 проекта VCMI, целью которого является создание открытого игрового движка, совместимого с форматом данных, используемых в играх Heroes of Might and Magic III. Движок кроссплатформенный и поддерживает как минимум Windows, Linux и Mac OS X. Независимыми энтузиастами ведется работа по портированию на Android и iOS. Исходные тексты доступны под лицензией GPLv2 или новее.

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

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

>>> Подробности

 , , ,

KroArtem
()

АМД и декодирование видео.

Форум — Talks

АМД открыла код для поддержки декодирования видео на старых картах серии HD2400 - HD4290 (на чипах RV6xx, RS[78]80, RV7[79]0)

Для декодирования виде на картах АМД используется специальный блок UVD. Ранее уже открывала код для поддержки декодирования видео, но поддержка была написана для карт с UVD2 и выше. Карты с UVD1 не поддерживались. Данный набор патчей должен исправить этот недостаток.

Предположительно патчи в ядро не войдут ранее 3.18.

Новость на форониксе

http://www.phoronix.com/scan.php?page=news_item&px=MTc3MTc

Сообщение в рассылке

http://lists.freedesktop.org/archives/dri-devel/2014-August/066738.html

Но есть маленькое но «A small Mesa patch is needed as well, cause the older hardware doesn't support field based output of video frames. So unfortunately VDPAU/OpenGL interop won't work either.»

 , , ,

Behem0th
()

Быстрый просмотр картинок в os x

Форум — Desktop

Можно ли в этом эталоне юзабельности сделать, чтобы картинки, находящиеся в одной директории можно было быстро просматривать (стрелкам вправо/влево), открыв одну из них? Безо всяких импортов в iPhoto и прочую хренотень.

Для тех, кто не в курсе: из коробки, при открытии одной из картинок (софтиной Просмотр.app) она превращается в тыкву: ее можно покрутить, поувеличивать, обрезать, но нельзя переключиться на следующее фото :'(

cipher ptarh

 

emissar
()

M&B:Warband где все?

Форум — Games

Что-то не могу найти ни одной темы на форуме или в стиме, где бы целенаправлено обсуждались баги порта и т.п. Вроде фанатов серии множество, под вайном в свое время (судя по репортам на winehq) пыталось играть много народу, а как вышел взаправдашний качественный порт, так никого и не найти. Две полудохлые темы, одна на TW, вторая в стиме. Может я не там ищу?

siphonops
()

Mount & Blade: Warband

Форум — Games

Вышла бета-версия игры Mount & Blade: Warband под Linux.

p.s: покупаем со скидкой, пока идёт распродажа.

 , warband

necrus
()

Подавление шума для микрофона (intel hda)

Форум — Linux-hardware

Многие мои собеседники в скайпе жалуются на фон от меня. При этом при понижение громкости не помогает, т.к. она выставлена на минимальный уровень при котором меня слышно.

Попробовал на оффтопике - всё хорошо, проблемы нет. Дело в чекбаттоне «Подавление шума» в настройках. Если кто-нибудь знает способ сделать такое в linux - прошу поделиться.

З.Ы. Ubuntu 14.04 без сторонних PPA.

 , , ,

oRLaN
()

FreshPlayerPlugin — PepperFlash в Firefox

Форум — Development

Flash плеер всё заменяют и заменяют, но никак не заменят полностью. Новые и сверхновые фичи браузеров это замечательно, но Flash бывает всё ещё нужен. К сожалению, доступная NPAPI браузерам версия застыла на 11.2, а новые версии выходят только в составе Chrome. Поэтому я делаю адаптер, который сможет быть посредником между PPAPI плагином и NPAPI браузером. Это такая штука, которая позволит использовать свежий Flash в Firefox, Opera и других браузерах, в которых работают плагины.

https://github.com/i-rinat/freshplayerplugin

 , , , , ppapi

i-rinat
()

Вставка своего кода в Linux ELF файл (или как добавить новую секцию или расширить существующую)

Форум — Development

Есть уже скомпилированная программа под Linux ELF формата, необходимо в неком месте сделать переход на мой ассемблерный код, выполнить его и возвратиться обратно (инжект). Проблема в том, что в файле нету неиспользуемых мест, где можно было бы перезаписать на мой код. Вопрос стоит в том, как расширить существующую секцию или создать новую чтобы выделить место под мой код? В Windows для PE файлов я делал это в пару кликов с помощью LordPE, просто выбирал «Sections -> Add», выбирал размер и параметры, и вуаля, новое место для моего кода готово. Но для ELF такого не нашел.

 ,

Sucks
()

Задачки от yandex

Форум — Development

Хотела задать вопрос в talks, но почему у меня нет такой возможности. Я недавно занялась изучением программирования на c++, поэтому прошу сильно не ругаться.

Не так давно наткнулась на вакансию разработчика в yandex, и там обнаружила несколько вопросов. Страница уже удалена, но доступна в кэше: http://webcache.googleusercontent.com/search?q=cache:l4nvA4HtP5gJ:company.yan...

Не укажите на мои ошибки в рассуждениях?

Вопрос 1

Перепишите код, устранив имеющиеся в нём проблемы, но не изменяя функцию main

class Foo {
 public:
  Foo(int j) { i = new int[j]; }
  ~Foo() { delete i; }

 private:
  int* i;
};

class Bar: Foo {
 public:
  Bar(int j) { i = new char[j]; }
  ~Bar() { delete i; }

 private:
  char* i;
};

void main() {
  Foo* f = new Foo(100);
  Foo* b = new Bar(200);
  *f = *b;
  delete f;
  delete b;
}

Здесь, я, как поняла, деструкторы должны быть виртуальными, должен быть описан оператор присваивания, а так же необходимо поле хранящее количество элементов, чтобы при копировании знать, какой длины массив? Или я что-то упустила?

Вопрос 2

В каких из следующих стандартных контейнеров худшее время поиска элемента по значению — O(log(n))?

 std::vector
 std::list
 std::deque
 std::set
 std::multiset
 std::unordered_set
 std::unordered_multiset
 сортированный std::vector
 сортированный std::list
 сортированный std::deque

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

Вопрос 3

Напишите код, преобразующий 32-битное целочисленное представление ip-адреса в строковое.

Догадываюсь, что что-то нужно куда-то сдвигать =)

Вопрос 4

Есть класс Bar, предназначенный для работы в многопоточной среде. Перечислите проблемы, которые вы видите в его реализации.

class Bar {
 public:
  void Add(int i, double d) {
    Locker auto_lock_d(m_doubles_);
    Locker auto_lock_i(m_integers_);
    integers_.push_back(i);
    doubles_.push_back(d);
  }

  bool Find(int i) {
    Locker auto_lock(m_integers_);
    if (std::find(integers_.begin(), integers_.end(), i) != integers_.end())
      return true;
    else
      return Find(double(i));
  }

  bool Find(double d) {
    Locker auto_lock(m_doubles_);
    return std::find(doubles_.begin(), doubles_.end(), d) != doubles_.end());
  }
    
 private:
  std::vector<int> integers_;
  std::vector<double> doubles_;
  Mutex m_integers_;
  Mutex m_doubles_;
};

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

totik
()

Wine и авторские права/

Форум — Games

Привет. Нарушаются ли «авторские права», если устанавливать виндовые приложения на Linux, в частности среда DirectX ?

 ,

Andre1278
()

vaapi в амдшном блобе запилено

Форум — Talks

Осталось покрасить, помыть и зарелизить

ckotinko
()

libvdpau-va-gl

Форум — Development

https://github.com/i-rinat/libvdpau-va-gl/releases

В двух словах, это VDPAU драйвер, который использует OpenGL для рисования и VA-API для декодирования видео.

VDPAU это открытый интерфейс, который подразумевает единую точку входа (libvdpau) и подключаемые драйверы; API не замкнуто накоротко на nVidia. Выбор конкретного драйвера осуществляется либо через переменную окружения VDPAU_DRIVER, либо спрашивается у X-сервера. Если так или иначе получить имя не удалось, считается, что оно есть «nvidia». Драйвер представляет собой разделяемую библиотеку с именем вида libvdpau_<drivername>.so.1. Программы линкуются с libvdpau, а она в свою очередь загружает нужный драйвер.

Чтобы использовать, нужно собрать, положить библиотеку в директорию, где её сможет найти компоновщик, и добавить в окружение переменную VDPAU_DRIVER=va_gl. Проверить, что драйвер работает, можно запустив vdpauinfo. А vainfo покажет, работает ли драйвер VA-API.

На видеокартах AMD по чудаковатым причинам происходят падения внутри XCloseDisplay. Чтобы обойти проблему, нужно в переменную VDPAU_QUIRKS добавить строку XCloseDisplay. Элементы в VDPAU_QUIRKS перечисляются через запятую, слитно, без пробелов и служат для тонкой настройки поведения драйвера. Кроме XCloseDisplay, есть ещё параметр ShowWatermark, включающий отображение строки va_gl в правом нижнем углу. Полный список можно найти в README.md.

Начиная с версии 2.99.908 xf86-video-intel сообщает переходнику libvdpau.so имя VDPAU драйвера. Символьных ссылок
libvdpau_i965.so.1libvdpau_va_gl.so.1
libvdpau_i915.so.1libvdpau_va_gl.so.1
достаточно для загрузки, и необходимости в использовании VDPAU_DRIVER больше нет.

 , , ,

i-rinat
()

Team Fortress 2 доступен

Форум — Talks

Теперь его могут установить не только участники бета-теста. Workaround для бага с генерацией шейдеров, проблема со Steam Overlay на Mesa, другие известные баги.

 , , ,

RussianNeuroMancer
()