LINUX.ORG.RU

Шестнадцатиричный просмотрщик файлов в разработке.

 , , , ,


0

1

Выставляю на всеобщее обсуждение мой новый шестнадцатиричный просмотрщик файлов. Это моё упражнение в создании вейланд/x11 приложения на технологии Вулкан.

Основные характеристики:

-шрифт misc fixed 6x13 в кодировке koi8 (с добавлением символов для заполнения непечатной части кодировки от 0 до 32)

-пиксельная точность: в лучших традициях пиксель-арта нет никакого сглаживания шрифтов

-зависимости: Vulkan и Glfw

-цвет зависит от значения байта. Текст выделен белым цветом.

-всё в одном шейдере, 2 треугольника, один проход, шрифт в месте с двоичным кодом файла подаётся через UBO

Приветствуется любая критика.

Благодарю за внимание!

>>> Просмотр (400x478, 37 Kb)

★★

Проверено: alpha ()

цвет зависит от значения байта. Текст выделен белым цветом.

Менять палитру можно?

luke ★★★★★
()

Приветствуется любая критика.

Всё таки главный WTF?! следовало бы сразу осветить. Как и зачем ддля hex-редактора задействовано ускорение 3Д графики и вообще gpu?

kirill_rrr ★★★★★
()
Ответ на: комментарий от luke

Я подумаю как задать палитру одной переменной окружения.

svyatozar ★★
() автор топика
Ответ на: комментарий от kirill_rrr

Дык, в первой строчке сказано же: «Это моё упражнение в создании вейланд/x11 приложения на технологии Вулкан.»

svyatozar ★★
() автор топика
Ответ на: комментарий от kirill_rrr

После того, как стали планомерно убирать поддержку растровых шрифтов и правильный хинтинг, упражнение стало вполне графическим :-D

gedisdone ★★★
()

Чёт не понял зачем оно если есть hexdump?

MaxPower ★★
()
Ответ на: комментарий от saahriktu

KOI8-R популярна

… и плазма не падает. Я конечно всё понимаю, но нельзя же до такой степени заниматься само-внушением.

beastie ★★★★★
()
Ответ на: комментарий от beastie

Но плазма действительно не падает. По крайней мере у меня пятые кеды не падают. А за корицей наблюдал периодические падения.

anti_win ★★
()
Ответ на: комментарий от beastie

Почему, на ваш взгляд, перечеркнутый ноль есть плохо? Мне это позволяет мгновенно различить о, О и 0 – чем больше фич, тем лучше распознавание…

mazdai ★★★
()
Ответ на: комментарий от mazdai

Я пялюсь на текст много рабочих часов в день. Т.ч. эстетика вопроса меня тоже очень волнует.

Ну, а если вы не можете отличить 0 от O, то мне за вас очень грустно.

PS: в частности в коде это различие вообще не играет никакой роли, ибо who-is-who ясно из контекста. И за свою практику я ещё ни разу не встречался с проблемой отделения мух от котлет. Проблема надуманная.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 4)
Ответ на: комментарий от beastie

IBM Plex выглядит годно.
Но с выводом не согласен. Пялюсь много в экран, чёткое разделение реально помогает на уровне рефлекса.

Простой вариант, выключить подсветку синтаксиса и цветной вывод в консоли. Я проводил данный эксперимент и год сидел на двух цветах.

Вывод: шрифт решает. Сильно решает.

Ну, а если вы не можете отличить 0 от O, то мне за вас очень грустно.

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

Vault_Boy
()

вейланд
Vulkan
Glfw

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

(с добавлением символов для заполнения непечатной части кодировки от 0 до 32)

Не, это фигня полная — они визуально неразличимые. Зачем изобретать велосипед, если а) графика для этих символов определена в cp437, и б) символы с этой самой графикой есть в unicode?

Вообще, это грандиозный недостаток практически всех хексдамперов под nix — заменять много разных символов в бинарном дампе на точки. Определение энтропии «на глаз» и визуальное различение паттернов идёт коту под хвост. В идеале должно быть 256 разных несмешивающихся символов. Максимум, с исключением для 0x00/0x20/0xA0/0xFF.

Для вдохновения в плане визуализации и куда ещё можно применить gl — см. Veles

А вообще, куда актуальнее был бы не хексвьювер, а терминал — быстрый, лёгкий и совместимый с де-факто стандартами (VTxxx и далее).

Quote
()
Последнее исправление: Quote (всего исправлений: 1)

-шрифт misc fixed 6x13 в кодировке koi8 (с добавлением символов для заполнения непечатной части кодировки от 0 до 32)

-пиксельная точность: в лучших традициях пиксель-арта нет никакого сглаживания шрифтов

Категорически непригодно на современных мониторах. На заурядном 15" ноуте 1920x1080 глаза рогом лезут, чтобы рассмотреть это чудо-юдо. В случае HiDPI без лупы глаза вытекут.

Linfan ★★★★★
()
Ответ на: комментарий от Quote

В идеале должно быть 256 разных несмешивающихся символов

В идеале желательно иметь оба режима: с точками и с символами. Когда заполнение точками, очень удобно текстовые стринги находить.

Linfan ★★★★★
()

Просмотрщик это хорошо, а редактор будет?

Harald ★★★★★
()
Ответ на: комментарий от SR_team

Если вывод (рендер) заточен только под эти 16 символов, то да — не важно. В таком случае этот вывод и годится только на это.

deep-purple ★★★★★
()
Ответ на: комментарий от Linfan

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

Не соглашусь. Именно потому, что это мешает находить UTF-8 и UCS–строки, заполнение точками отдельно выбешивает. А для asciiz есть strings.

Но опять же, если точки доступны именно как альтернатива, а не как основной и единственный режим — почему бы и нет. Можно вообще позволять задать фильтр–маску — какие символы из 256 пропускать, а какие заменять на подстановку. И фильтров/подстановок позволить более одного.

Quote
()
Ответ на: комментарий от beastie

Перечёркнутый ноль – признак негодного шрифта.

Не соглашусь. IMHO, для программерского шрифта перечёркнутый ноль (либо полуперечёркнутый, как в Fixedsys) — это всё–таки хорошо и правильно. А вглядываться в степень ширины «O» — удовольствие для дизайнеров / эстетовснобов / мазохистов (нужное подчеркнуть).

Проблема надуманная.

10Ом, 100м, 1Ом, 10м,   10Ом, 100м, 1Ом, 10м  

Quote
()
Ответ на: комментарий от Quote

доступны именно как альтернатива

В том то и смысл, чтобы иметь настраиваемую среду, а не тупо копировать просмотрщики времен MSDOS. Благо и ресурсы железа и ЯП позволяют гораздо большее чем 25 лет назад.

Linfan ★★★★★
()

Благодарю за отзывы! Буду думать как улучшить…

svyatozar ★★
() автор топика
Ответ на: комментарий от anti_win

Вот у меня упала (точнее не упала, а стал чёрным весь рабочий стол, все элементы пропали, но процесс остался висеть) минут 30 назад, держу в курсе.

peregrine ★★★★★
()
Ответ на: комментарий от beastie

в частности в коде это различие вообще не играет никакой роли

Я когда пишу консольные приложения, часто надо парсить аргументы командной строки. Иногда бывает O - допустимое значение, а иногда 0. Обычно аргумент дефолтный я задаю в виде строки, т.е. «O» или «0», а дальше оно там как-то приводится, если это численный аргумент. Ну и если попутать, то может быть неприятно, например, когда у тебя какой-то параметр может принимать и число и O. Теоретически это вполне может быть нормальным.

peregrine ★★★★★
()
Ответ на: комментарий от Quote

Именно потому, что это мешает находить UTF-8

Они редко встречаются. Вот UTF-32 находить надо уметь. Т.е. в идеале кодировку уметь бы переключать, но там не однозначно понятно, где начало фрагмента, по крайней мере для алгоритма, так что если не делать какие-то хитрости и эвристику, то не получится.

peregrine ★★★★★
()
Ответ на: комментарий от Quote

Это именно что сконструированный пример, ибо так никто не пишет. И тем более в коде.

Я не спорю, что есть случаи (те же пароли), но в общем они мне никогда не встречались.

beastie ★★★★★
()
Ответ на: комментарий от peregrine

Опять таки частный и редкий случай.

Лучший пример, где это ещё может играть роль, был выше с

if (x == '0')

Но и это тоже редкость.

На вкус и цвет всё фломастеры разные. Я предпочитаю непокорёженные нули. И проблем с этим ими никогда не имел.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от Quote

IMHO, для программерского шрифта 10Ом, 100м, 1Ом, 10м

Не только для программерского, и это еще хорошо если ты хотя-бы ожидаешь подвох, как в случае с Омами, плохо когда у тебя вообще не прогнозируемая рандомная последовательность, где может в одном случае может встретиться только ноль, а в другом только буква о - тогда вообще в глаза не бросится пока не начнешь это перевводить руками - например цифро-буквенный пин код, который генерится сам а пользователь потом ломает голову ПАЧИМУНЕПРИНИМАЕТПАРОЛЬ111

rukez ★★★★
()
Ответ на: комментарий от beastie

ибо так никто не пишет.

Да нет, это стандартная запись элементов на монтажке/боме электронной платы

ГОСТ 2.702-2011 Единая система конструкторской документации (ЕСКД). Правила выполнения электрических схем

  • .3.20 При указании около УГО номиналов резисторов и конденсаторов (см. рисунок 8) допускается применять упрощенный способ обозначения единиц величин:
  • для резисторов:
    от 0 до 999 Ом - без указания единиц величин,
    от 1·10 до 999·10 Ом - в килоомах с обозначением единицы величин строчной буквой к,
    от 1·10 до 999·10 Ом - в мегаомах с обозначением единицы величин прописной буквой М, *

Т.е. ты прям по госту можешь написать:
10 (10 Ом)
10Ом (то-же 10 Ом, не сокращенно - ГОСТ допускает)
100М (100 мегаом)

п.с. почему не работает курсив между * ?

rukez ★★★★
()
Последнее исправление: rukez (всего исправлений: 2)
Ответ на: комментарий от rukez

Мну электрик-электроник по первому образованию, т.ч. я в курсе. ;)

Тем не менее пишется не слитно. 100k или 100 kΩ, 10 или 10 Ω. А пример, когда оно всё в кучу искусственный.

beastie ★★★★★
()
Ответ на: комментарий от beastie

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

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

michwill ★★★★★
()
Последнее исправление: michwill (всего исправлений: 1)
Ответ на: комментарий от michwill

Зачем же браковать шрифт из-за одного только нуля? Можно предоставить пользователю в файле настроек задать свой вариант написания любого стмвола.

svyatozar ★★
() автор топика
Последнее исправление: svyatozar (всего исправлений: 1)
Ответ на: комментарий от Linfan

В принципе, к шрифту 6х13 можно добавить 10х20 - но стоит ли заморачиваться, если можно просто всё окно смасштабировать 2 к 1?

svyatozar ★★
() автор топика

-цвет зависит от значения байта. Текст выделен белым цветом.

Я бы не хардкодил подобные вещи. Мне показалось, что цвет меняется просто по номеру колонки - это позволяет находить байт на любой из сторон и БЫСТРО находить его соответствие на другой. Я б такой режим тоже сделал.

matumba ★★★★★
()
Ответ на: комментарий от svyatozar

Зачем же браковать шрифт из-за одного только нуля?

Потому что в мире программистов ВСЁ ТОЧНО. Никому нафиг не упало гадать по этим каракулям, ноль там или О. Шрифт без чёткого нуля - говно и не имеет права использоваться в программировании.

Можно предоставить пользователю в файле настроек задать свой вариант написания любого стмвола.

Может, ты ещё редактор шрифтов прикрутишь? :) Юзеру нафиг не упали эти «настройки». Дай ему чёткий шрифт и не парь мозг. Юзабилити и всё такое.

matumba ★★★★★
()

Мммм… Хотел спросить чем это лучше hexdump -C и просмотровщика в миднайте, но почитал описание… Да, проект неплохой, API освоено, рендер текста стандартный. Хвалю! Полезность в данном случае вторична, но как пример использования вулкана очень даже. Если выложишь исходники.

slapin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.