# Підручник з &okteta;

Friedrich
W. H.
Kossebau

    &Friedrich.Kossebau.email;

Alex
Richardson

    &Alex.Richardson.email;

Юрій
Чорноіван

    yurchor@ukr.net

Переклад українською
2008, 2010
&Friedrich.Kossebau;
&FDLNotice;
2010-01-12
0.4.0

&okteta; — це простий редактор для безпосереднього редагування даних файлів. Програми такого типу також називають шістнадцятковими або двійковими редакторами.

KDE
kdeutils
Okteta
перегляд
редагування
біти
байти
двійкові
вісімкові
шістнадцяткові
шістнадцятковий редактор
необроблені дані

## Вступ

&okteta; — це простий редактор для безпосереднього редагування даних файлів.

Дані буде показано у двох формах: як числові значення байтів та як символи, що відповідають цим числовим значенням. Значення та символи може бути показано або у два стовпчики (типовий формат перегляду у шістнадцяткових редакторах) або у форматі рядків, де значення буде показано над символом. Ви зможете змінювати як значення, так і символи.

Окрім звичайних засобів редагування, до складу &okteta; входить також невеликий набір інструментів, зокрема інструмент декодування у прості типи даних, таблиця всіх байтів з символами і значеннями, інформаційне вікна зі статистичними даними, інструмент фільтрування та інструмент видобування рядків.

Всі зміни у завантажених даних можна без обмежень скасовувати та повторювати.

## Основи

### Як запустити &okteta;

Виконайте команду ``okteta`` з командного рядка або оберіть пункт Двійковий редактор з підменю Програми Інструменти у інструменті запуску програм.

Можна скористатися стандартними параметрами командного рядка &Qt; і &kde;, список цих параметрів можна переглянути у виводі команди ``okteta` `--help``.

Параметрами командного рядка, специфічними для &okteta; є

`<URL>` — відкрити файли за вказаними адресами або адресою URL.

### Використання

Головне вікно &okteta; складається з таких частин: смужки меню, панелі інструментів, смужки стану, одної або декількох бічних панелей з інструментами та основної області перегляду з вкладками показу даних.

Після відкриття файла або створення нового масиву байтів з байтів, що у них містяться, буде побудовано послідовний список, кожен з рядків якого міститиме задану кількість байтів. Рядки буде показано у двох варіантах: як числові значення і як символи, що відповідають цим значенням. Значення і символи може бути показано або розділеними на дві колонки, або поряд одне з одним (значення буде показано над символом). Ліворуч від списку буде показано відступи першого байта кожного з рядків.

Робота з даними подібна до роботи у більшості текстових редакторів: дані можна змінювати, вирізати, копіювати, вставляти, перетягувати і скидати, точно так само, як ви це робите у текстовому редакторі. Курсор позначає поточну позицію. Натискання клавіші Insert перемикає режим редагування між перезаписом і вставкою. Режим перезапису працює трохи інакше, ніж у текстових редакторах, оскільки програма забороняє будь-які дії, які змінюють розмірність масиву байтів.

На відміну від текстових редакторів дані буде показано у двох варіантах. Одночасно для введення даних буде придатним лише один з цих варіантів. Програма показуватиме два пов’язані між собою курсори для значень і для символів, активний курсор блиматиме. Якщо буде активним поле символів, ви зможете вводити символи у спосіб, звичний для текстових редакторів. Якщо активним буде поле значень, введення цифри відкриватиму маленьке віконечко редактора, у якому ви зможете ввести решту значення.

Діалогове вікно пошуку надає користувачеві можливість пошуку вказаного рядка, байтів, які можна визначати у шістнадцятковому, десятковому, вісімковому, двійковому вигляді або у вигляді тексту (у поточному 8-бітовому кодуванні або UTF-8).

Одночасно можна відкривати декілька масивів даних, але лише один з них може бути активним. Щоб обрати активний масив байтів, скористайтеся меню Вікна.

## Інструменти

### Огляд

У &okteta; передбачено декілька інструментів. Деякі з них відповідають за аналіз та обробку масивів даних, деякі мають загальне призначення. Задіяти або вимкнути ці інструменти можна за допомогою меню Інструменти. Кожен з інструментів має власну невеличку панель, яку буде розташовано на одній з бічних панелей або у окремому віконці. Ви можете швартувати, від’єднувати, перевпорядковувати та розташовувати стосами панельки інструментів за допомогою миші: наведіть вказівник миші на смужку заголовка панелі інструменту, натисніть ліву кнопку миші, пересуньте панель у бажане місце і відпустіть кнопку, щоб завершити компонування, або клавішу &Esc;, щоб скасувати пересування панелі.

#### Інструменти аналізу та обробки

Таблиця байтів

  У цій таблиці показано список можливих значень байтів у вигляді символів і числових значень.

  Обране значення можна вставляти за поточним розташуванням курсора визначену кількість разів. Дію з вставлення можна виконати за допомогою кнопки Вставити або наведення вказівника на відповідний рядок таблиці з наступним подвійним клацанням.

Двійковий фільтр

  Фільтри виконує двійкові дії над вибраними байтами. Після вибору дії (AND, OR, ROTATE..) параметри, якщо такі є, можна встановити у полі, розташованому нижче. Виконати фільтрування можна за допомогою кнопки Фільтрувати.

Рядки

  За допомогою цього інструмента можна шукати рядки у вибраних байтах. Після того, як ви оберете мінімальну довжину рядка, рядки можна знайти за допомогою кнопки Видобути. Список рядків можна звузити введенням шаблону фільтрування.

Статистика

  За допомогою цього інструменту можна зібрати деяку статистичну інформацію щодо вибраних байтів. Серед цих даних будуть дані щодо частоти входження кожного з байтових значень до виділеного фрагмента. Наказати програмі виконати збирання інформації можна натисканням кнопки Зібрати.

Контрольна сума

  За допомогою цього інструменту можна обчислювати різноманітні контрольні суми та хеш-суми для позначених байтів. Після вибору алгоритму та встановлення значення параметра, якщо такий потрібен, відповідну суму можна обчислити натисканням кнопки Обчислити.

Таблиця розкодування

  У цій таблиці показано значення байта або байтів, починаючи від поточного розташування курсора, як їх відповідники серед простих типів даних, зокрема цілих чисел (Integer) або чисел з плаваючою комою (Float), але також у форматі UTF-8. Якщо ви наведете вказівник миші на рядок у таблиці і двічі клацнете лівою кнопкою миші, програма відкриє вікно редактора, у якому ви зможете переглянути і змінити значення.

Структури

  За допомогою цього інструменту можна вивчати та редагувати масиви байтів на основі визначених користувачем структур. Докладніший опис наведено у окремому розділі.

#### Загальні інструменти

Файлова система

  Панель цього інструменту є вбудованим навігатором файловою системою, яким можна скористатися для позначення файлів, які слід відкрити.

Документи

  На панелі цього інструменту буде показано пункти всіх поточних створених або завантажених файлів. Програма позначить відповідним чином пункти файлів, перегляд яких є активним, файли з незбереженими змінами та файли, які було змінено на носії даних іншою програмою.

Закладки

  Панеллю цього інструменту можна скористатися для керування закладками, якщо ви не бажаєте користуватися меню Закладки.

  У поточній версії програми закладки є лише тимчасовими, програма не зберігає їх розташування під час закриття масиву байтів або завершення роботи самої програми.

Інформація про файл

  За допомогою цього інструменту можна переглянути відомості щодо поточного файла, зокрема його тип, місце зберігання і розмір.

### Інструмент структур

#### Загальне

За допомогою інструменту «Структури» можна аналізувати та редагувати масиви байтів на основі створених користувачем визначень структур, які можна побудувати з масивів, об’єднань, елементарних типів та переліків.

Інструмент має власне діалогове вікно параметрів, відкрити яке можна за допомогою натискання кнопки Параметри. Передбачено досить багато параметрів налаштування, зокрема стиль (десяткові, шістнадцяткові або двійкові), у якому буде показано значення. Крім того, можна визначити, які визначення структур буде завантажено і які структури буде показано.

Структури визначаються за допомогою файлів визначення структур &okteta; (&XML;-файлах, з суфіксом назви `.osd`). Крім того, потрібен файл `.desktop`, що містить метадані щодо файла опису структури, зокрема відомості щодо автора, домашньої сторінки та умов ліцензування.

У поточній версії програми ще немає вбудованої підтримки створення, редагування або встановлення визначень структур, отже все це слід робити вручну у спосіб, описаний у наступних розділах.

#### Встановлення визначень структур

Інструмент «Структури» шукає описи структур у підкаталозі `share/apps/okteta/structures/` каталогу даних програм користувача (визначити адресу цього каталогу можна за допомогою команди ``kde4-config` `--localprefix``). Якщо ви ще не встановлювали жодного визначення структури, можливо, вам доведеться створити відповідний підкаталог.

У цьому підкаталозі має бути власний підкаталог для кожного з визначень структури, у якому мають зберігатися обидва файла визначення: файл `.desktop` і файл `.osd`.

Наприклад, якщо каталогом даних програм є `.kde`, а визначення структури має назву ExampleStructure, має бути каталог `.kde/share/apps/okteta/structures/ExampleStructure`, що міститиме файли `ExampleStructure.desktop` і `ExampleStructure.osd`.

Якщо ви встановили нове визначення структури створенням такого каталогу або редагуванням файлів у ньому, вам слід перезапустити &okteta;, а потім відкрити діалогове вікно параметрів інструменту «Структури». Там слід перейти на вкладку Керування записами структур і переконатися, що відповідний пункт визначення структури позначено. Якщо його не позначено, позначте пункт і натисніть кнопку Застосувати зміни, перемкніться на вкладку Структури і переконайтеся, що бажаний пункт є у списку, розташованому у правій частині вікна.

#### Поширення визначень структур

Якщо потрібна вам структура є досить типовою, ви можете не створювати визначення власноруч, а скористатися готовим визначенням з якогось зі сховищ визначень, зокрема kde-files.org.

Крім того, ви і самі можете поділитися з іншими користувачами вашими визначеннями. Щоб зробити це, створіть файл архіву (наприклад, стиснутий zip архів tar, `.tgz`), який міститиме лише підкаталог з файлом `.osd` і файлом `.desktop`. Якщо скористатися нашим прикладом з попереднього розділу, ваш підкаталог має називатися `ExampleStructure`. Якщо ви користуватиметеся саме цим форматом, у майбутніх версіях інструменту «Структури» ви зможете автоматично звантажувати і встановлювати створені вами раніше визначення.

#### Створення власних визначень структур

##### Перше визначення структури

Для початку ми створимо визначення дуже простої структури, що міститиме лише прості типи даних (один символ і одне 32-бітове ціле число (int)). Цю структуру можна записати мовою C/C++ так:

              struct simple {
                char aChar;
                int anInt;
              };

Спершу слід створити файл `.osd`, який ми назвемо `simplestruct.osd`:

              <?xml version="1.0" encoding="UTF-8"?>
              <data>
                <struct name="simple">
                  <primitive name="aChar" type="Char"/>
                  <primitive name="anInt" type="Int32"/>
                </struct>
              </data>

Цей файл дуже подібний до визначення структури у C/C++. Атрибутом типу може бути будь-яке з таких значень:

- Char
- Int8
- UInt8
- Int16
- UInt16
- Int32
- UInt32
- Int64
- UInt64
- Float
- Double
- Bool8
- Bool16
- Bool32
- Bool64

Наступним кроком буде написання файла метаданих `.desktop`, який по суті є просто набором пар «ключ-значення». Файл слід назвати `simplestruct.desktop`. У нашому прикладі вміст файла буде таким:

              [Desktop Entry]
              Encoding=UTF-8
              Icon=arrow-up
              Type=Service
              ServiceTypes=KPluginInfo

              Name=Simple test structure
              Comment=A very simple test structure containing only two items

              X-KDE-PluginInfo-Author=Alex Richardson
              X-KDE-PluginInfo-Email=alex.richardson@gmx.de
              X-KDE-PluginInfo-Name=simplestruct
              X-KDE-PluginInfo-Version=1.0
              X-KDE-PluginInfo-Website=http://www.plugin.org/
              X-KDE-PluginInfo-Category=structure
              X-KDE-PluginInfo-License=LGPL
              X-KDE-PluginInfo-EnabledByDefault=false

Призначення полів має бути зрозумілим з їх назв, окрім поля `X-KDE-PluginInfo-Name`. У цьому полі має бути назва файла `.osd` (без суфікса `.osd`).

Тепер створимо підкаталог `simplestruct`, як це вже було описано, скопіюємо до цього підкаталогу наші два файла і перезапустимо &okteta;.

##### Складніші структури

Тепер ми створимо визначення складнішої структури, яке назвемо "complex" і збережемо у файлі з назвою `complex.osd`. Ця структура міститиме два масиви (один фіксованої довжини і один, у якому довжина визначатиметься під час роботи програми), а також вкладену структуру і об’єднання (union).

              <?xml version="1.0" encoding="UTF-8"?>
              <data>
                <struct name="complex">
                  <primitive name="size" type="UInt8" />
                  <union name="aUnion">
                    <array name="fourBytes" length="4">
                      <primitive type="Int8" />
                    </array>
                  </union>
                  <struct name="nested">
                    <array name="string" length="size"> <!-- references the field size above -->
                      <primitive type="Char" />
                    </array>
                  </struct>
                </struct>
              </data>

Така структура формально визначається у C/C++ так:

    struct complex {
                uint8_t size;
                union aUnion {
                  int8_t fourBytes[4];
                };
                struct nested {
                  char string[size] //не відповідає стандартам C++, посилається на значення розмірності uint8
                };
              };

Очевидно, поля посилань на масиви змінної (динамічної) довжини слід вказувати до самого масиву.

Далі, ми створимо файл `complex.desktop`, як і у попередньому прикладі (переконайтеся, що значення `X-KDE-PluginInfo-Name` змінено відповідним чином), та повторимо дії зі встановлення визначення структури.

##### Докладніші відомості

Декілька прикладів визначень структур можна знайти тут. Серед цих прикладів є файл заголовка для файлів PNG. Схема &XML;, яка описує структуру файла `.osd`, зберігається тут. Якщо вам потрібні якісь додаткові відомості, зверніться до автора за адресою &Alex.Richardson.email;

## Пункти меню

Пам’ятайте, що більшості команд меню відповідають клавіатурні скорочення.

### Меню «Файл»

&Ctrl;N Файл Створити

  Створити масив байтів...

  - Порожній: ...як порожній.

  - З буфера обміну даними: ...як поточний вміст буфера обміну даними.

  - Шаблон...: ...за вказаним шаблоном.

  - Випадкові дані: ...заповненим випадковими даними.

  - Послідовність: ...з усіма байтами від 0 до 255.

&Ctrl;O Файл Відкрити...

  Відкриває існуючий файл.

Файл Відкрити недавні

  Дозволяє обрати файл зі списку останніх відкритих файлів.

&Ctrl;S Файл Зберегти

  Зберегти масив байтів до вказаного файла.

Файл Зберегти як...

  Зберігає масив байтів у інший файл з новою назвою.

Файл Експортувати

  Експортувати обрані байти до файла...

  - Значення: ...у вигляді значень байтів.

  - Звичайний текст: ...закодованим як символи.

  - Base64: ...закодованим у форматі Base64.

  - Масив C: ...у вигляді масиву, що використовується у мові програмування C.

  - Переглянути як звичайний текст: ...як у перегляді даних з відступом, значення байтів і символи.

F5 Файл Перезавантажити

  Відкинути всі зміни і перезавантажити масив байтів з файла.

&Ctrl;P Файл Друкувати...

  Друкує поточний масив байтів.

Файл Дозволи

  Встановлює дозволи на зміну:

  Тільки для читання

    Встановлення такого дозволу забороняє вносити зміни до завантаженого масиву байтів.

&Ctrl;W Файл Закрити

  Закриває поточний масив байтів.

Файл Закрити всі

  Закрити всі масиви байтів.

Файл Закрити всі інші

  Закрити всі масиви байтів, окрім поточного.

&Ctrl;Q Файл Вийти

  Закрити вікно &okteta;.

### Меню «Правка»

У поточній версії &kde; 4.4 копіювання і вирізання надсилає дані до буфера з типом MIME "application/octetstream", &klipper; не зможе показати ці дані. Майже всі інші програми також не зможуть цього зробити, оскільки це прості необроблені дані. Отже, вам слід скористатися підменю Копіювати як.

&Ctrl;Z Правка Вернути

  Скасувати останню дію.

&Ctrl;&Shift;Z Правка Вернути

  Повернути результат останньої скасованої дії.

&Ctrl;X Правка Вирізати

  Вилучити вибрані байти і копіювати ці байти до буфера.

&Ctrl;C Правка Копіювати

  Копіювати вибрані байти до буфера.

&Ctrl;V Правка Вставити

  Вставити вирізані або скопійовані байти з буфера.

Правка Копіювати як

  Копіювати вибрані байти до буфера.

  - Значення: ...у вигляді значень байтів.

  - Звичайний текст: ...закодованим як символи.

  - Base64: ...закодованим у форматі Base64.

  - Масив C: ...у вигляді масиву, що використовується у мові програмування C.

  - Переглянути як звичайний текст: ...як у перегляді даних з відступом, значення байтів і символи.

Правка Вставити
  Вставити шаблон...

    Вставляє вказаний рядок байтів за розташування курсора.

    Параметри діалогового вікна нададуть вам змогу вказати кількість вставлень шаблону і його формат (шістнадцятковий, десятковий, вісімковий, двійковий, символи або UTF-8).

&Ctrl;A Правка Вибрати все

  Вибрати весь масив байтів.

&Ctrl;&Shift;A Правка Скасувати вибір

  Скасувати поточний вибір.

&Ctrl;E Правка Вибрати діапазон…

  Відкрити вбудоване діалогове вікно для введення діапазону позначення.

Ins Правка Режим перезапису

  Перемикає режим редагування з режиму вставки на режим перезапису.

  Режим перезапису реалізовано у дуже строгому варіанті: не можна змінювати розмір даних (додавати або вилучати байти).

&Ctrl;F Правка Пошук...

  Шукає вказаний шаблон у документі. Можна шукати шістнадцяткові, десяткові, вісімкові, двійкові, двійкові або текстові шаблони.

  Параметри відповідного діалогового вікна нададуть вам змогу вказати початкову точку, напрям і діапазон пошуку.

F3 Правка Знайти далі

  Шукає наступне входження шаблону вказаного у пункті Пошук.

  Якщо шаблону не вказано, буде показано діалогове вікно, в якому ви зможете вказати шаблон.

&Shift;F3 Правка Знайти позаду

  Шукає попереднє входження шаблону, вказаного у пункті Пошук.

  Якщо шаблону не вказано, буде показано діалогове вікно, в якому ви зможете вказати шаблон.

&Ctrl;R Правка Замінити...

  Замінює знайдений шаблон іншим вказаним шаблоном.

&Ctrl;G Правка Зсув переходу...

  Пересуває курсор до вказаного зсуву у байтах.

### Меню «Перегляд»

&Ctrl;+ Перегляд Збільшити

  Збільшує розмір шрифту.

&Ctrl;- Перегляд Зменшити

  Зменшує розмір шрифту.

Перегляд Показувати недруковані символи

  Вмикає або вимикає показ недрукованих символів. Якщо показ вимкнено, на відповідних місцях у стовпчику символів замість недрукованих символів буде показано символ-замінник.

F11 Перегляд Показати відступ рядка

  Вмикає або вимикає показ зсуву рядка на панелі, розташованій ліворуч.

Перегляд Показувати значення або символи

  Цей пункт надає вам змогу обрати, які інтерпретації байтів буде показано. Можливі варіанти:

  - Значення

  - Символи

  - Значення і символи

Перегляд Кодування значення

  Надає змогу обрати кодування значень з таких варіантів:

  - шістнадцяткове

  - десяткове

  - вісімкове

  - двійкове

Перегляд Кодування символів

  За допомогою цього підменю ви можете обрати кодування символів.

Перегляд Динамічне компонування

  Встановлює правила компонування показу даних. Тут можна визначити скільки байтів буде показано у рядку, залежно від ширини області перегляду. Можливі такі правила:

  - Вимкнути: буде зафіксовано поточну кількість байтів на рядок, яке не змінюватиметься після зміни розмірів області перегляду.

  - Переносити лише повні групи байтів: вивести найбільшу можливу кількість байтів у рядку, але число байтів у групі має бути цілим.

  - Увімкнути: те саме, що і попередній пункт, але дозволяє використання груп байтів з нецілого числа байтів.

Перегляд Режим перегляду

  Надає змогу обрати компонування перегляду з таких варіантів:

  - Стовпчики: інтерпретацію значень і символів буде показано у класичному компонуванні: кожен список у окремому стовпчику.

  - Рядки: символьне тлумачення байта буде показано безпосередньо під інтерпретацією у вигляді значення.

&Ctrl;&Shift;T Правка Розділити горизонтально

  Розділити область поточного фокусованого перегляду на дві частини і додати копію поточної області до нової, розташованої нижче, області.

&Ctrl;&Shift;L Правка Розділити вертикально

  Розділити область поточного фокусованого перегляду на дві частини і додати копію поточної області до нової, розташованої праворуч, області.

&Ctrl;&Shift;L Перегляд Закрити область перегляду

  Закрити поточну фокусовану область перегляду.

&Ctrl;&Shift;F11 Перегляд Повноекранний режим

  Вмикає або вимикає повноекранний режим.

### Меню Вікна

У цьому меню буде показано список поточних областей перегляду. Тут можна обрати активне вікно.

### Меню Закладки

У одному масиві байтів можна встановити декілька закладок. Кожен масив байтів має свій набір закладок, список відповідних закладок буде показано внизу меню Закладки. Щоб пересунути курсор до закладки і переглянути байти за нею, оберіть відповідну закладку у цьому меню.

У поточній версії програми закладки є лише тимчасовими, програма не зберігає їх розташування під час закриття масиву байтів або завершення роботи самої програми.

&Ctrl;B Закладки Додати закладку

  Позначити місце у масиві байтів закладкою.

&Ctrl;&Shift;B Закладки Вилучити закладку

  Вилучає поточну закладку. Доступ до цієї команди можна отримати, лише якщо курсор знаходиться у місці, на яке встановлено закладку.

Закладки Вилучити всі закладки

  Спорожнює список закладок.

&Alt;Up Закладки Перейти до попередньої закладки

  Пересуває курсор до попередньої закладки.

&Alt;Down Закладки Перейти до наступної закладки

  Пересуває курсор до наступної закладки.

### Меню Інструменти

Показує список встановлених інструментів. У цьому списку можна увімкнути або вимкнути показ будь-якого з цих інструментів. Докладний опис всіх інструментів наведено у розділі Інструменти.

### Меню Параметри

Параметри Показати пенал

  Вмикає або вимикає показ пенала під смужкою меню.

Параметри Показати смужку стану

  Вмикає або вимикає показ рядка стану.

Параметри Налаштувати скорочення...

  Відкриває вікно, у якому можна змінити клавіатурні скорочення для дій у програмі.

Параметри Налаштувати пенали...

  Відкриває вікно керування вмістом пенала.

### Меню Довідка

&help.menu.documentation;

### Пенал

На панелі інструментів (пеналі) буде показано піктограми для таких команд:

(Результат дії цих команд повністю збігається з відповідними командами меню.)

- Створити

- Відкрити

- Зберегти

- Повернути

- Друк

- Вернути

- Повторити

- Вирізати

- Копіювати

- Вставити

- Знайти

- Знайти далі

## Подяки і ліцензія

&okteta;

Авторські права на програму належать &Friedrich.Kossebau; &Friedrich.Kossebau.email;, ©2006–2010

Авторські права на документацію належать &Friedrich.Kossebau; &Friedrich.Kossebau.email;, ©2008, 2010

Переклад українською: Юрій Чорноіванyurchor@ukr.net

&underFDL; &underGPL;

## Встановлення

### Як отримати &okteta;

&install.intro.documentation;

### Збирання і встановлення

&install.compile.documentation;

&documentation.index;