# Приручник за Октету

## Увод

Октета је једноставан уређивач за сирове податке у фајловима.

Подаци су приказани у две варијанте: као бројевне вредности бајтова, и као знакови придружени тим вредностима. Вредности и знакови могу бити приказани или у две колоне (традиционални приказ у хексадекадним уређивачима) или по врстама са вредношћу изнад знака. Уређивати се може и по вредностима и по знаковима.

Поред уобичајених уређивачких способности, Октета пружа и мали скуп специјалних алатки, као што су табеларно набрајање декодирања према уобичајеним типовима података, табеларно набрајање свих могућих бајтова са знаковним и вредносним еквивалентима, информативни приказ статистике, калкулатор контролних сума, алатка за филтрирање и алатка за издвајање ниски.

Све измене над подацима могу бити опозиване и понављане без ограничења.

## Основе

### Покретање Октете

Упишите ``okteta`` у командни одзивник или изаберите Хексадекадни уређивач из групе програми Алатке у покретачу програма.

Доступне су стандардне КуТ и КДЕ опције командне линије, а набројати се могу извршавањем ``okteta` `--help``.

Опције командне линије посебне за Октету су:

``<УРЛ‑ови>`` — отвара фајлове са задатих УРЛ‑ова.

### Коришћење

Главни прозор Октете има следеће компоненте: траку менија, траку алатки, траку стања, једну или више бочних трака са алаткама, и главни приказ података са језичцима.

Када се отвори фајл или направи нови низ бајтова, садржај бајтова се ниже у редове са задатим бројем бајтова по реду. Приказују се у два облика: као бројевне вредности и као знакови придружени тим вредностима. Вредности и знакови могу бити приказани или раздвојено у две колоне, или једни до других са вредношћу изнад знака. На левој страни дати су помаци првог бајта у сваком реду.

Ради се слично као у већини уређивача текста: подаци се могу уређивати, исецати, копирати, налепљивати и превлачити, као и обичан текст. Курсор означава тренутни положај. Притиском на тастер Insert мењате између режима пребрисавања и уметања. Режим пребрисавања је строжији него у уређивачима текста, у томе што не дозвољава поступке који би променили величину низа бајтова.

За разлику од уређивача текста, садржај се приказује у два облика; само један од њих може бити активан за прихватање улаза. Дата су два повезана курсора, један у приказу вредности а други у приказу знакова, и курсор активног приказа трепће. Када су активни знакови, притиском на прву цифру отвара се минимални уређивач ради уношења остатка вредности.

Дијалог за претрагу омогућава тражење одређене ниске бајтова, дефинисане као хексадекадна, декадна, октална или бинарна вредност, или као текст (по текућем кодирању или УТФ‑8).

Истовремено може бити отворено више низова бајтова, али само један може бити активан. Активни низ бирате кроз мени Прозори.

## Алатке

### Преглед

Октета садржи разне алатке, неке за анализирање и манипулисање низовима бајтова, а неке са општијом наменом. Ове алатке се могу активирати и деактивирати преко ставке Алатке на траци менија. Свака алатка има свој мали приказ, који или пристаје у једну од бочних трака или слободно плута као прозор. Приказе алатки можете сидрити, откачињати, прераспоређивати, а такође и слагати тако што притиснете лево дугме миша над насловном траком приказа, померите га колико желите, па пустити дугме да довршите радњу (или тастер Esc да одустанете).

#### Анализатори и манипулатори

Табела бајтова

- Табела набраја све могуће вредности бајта, и знаковне и нумеричке.

  Изабрана вредност може се уметнути на положају курсора за дефинисани број бајтова. Умеће се дугметом Уметни или двокликом на ред у табели.

Бинарни филтер

- Филтер изводи бинарне операције над изабраним бајтовима. Након избора операције (И, ИЛИ, РОТИРАЈ...), параметри се, ако их има, могу поставити у пољу испод. Филтер се примењује дугметом Филтрирај.

Ниске

- Ова алатка проналази ниске у изабраним бајтовима. Након избора минималне дужине, тражење се покреће дугметом Извуци. Списак приказаних ниски може се сузити уношењем филтерског израза.

Статистика

- Ова алатка гради статистику за изабране бајтове, коју чине учесталости понављања за сваку вредност бајта у избору. Може се прорачунати дугметом Изгради.

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

- Ова алатка рачуна разне контролне и дисперзионе суме изабраних бајтова. Пошто изаберете алгоритам и поставите параметар, ако га има, сума се израчунава притиском на дугме Израчунај.

Табела декодирања

- Табела приказује вредности бајтова на положају курсора, за неке уобичајене једноставне типове података као што су целобројни или у покретном зарезу, али и УТФ‑8. Двоклик на врсту у табели отвара уређивач у којем се вредност може изменити.

Структуре

- Ова алатка омогућава испитивање и уређивање низова бајтова на основу кориснички задатих дефиниција структура. Детаљне инструкције дате су у посебном одељку.

#### Опште алатке

Фајл систем

- Ова алатка је угнежђени прегледач фајлова којим се могу бирати фајлови за отварање.

Документи

- Ова алатка показује све тренутно учитане и направљене фајлове. Симболима су означени фајл са тренутно активни приказом, фајлови који имају несачуваних измена и фајлови чију ускладиштену копију је изменио неки други програм.

Обележивачи

- Ова алатка служи за управљање обележивачима, као алтернатива менију Обележивачи.

  Обележивачи су за сада пролазни, тј. не уписују се када затворите низ бајтова или цео програм.

Подаци о фајлу

- Ова алатка наводи неке податке о текућем фајлу, као што су тип, локација складиштења и величина.

### Алатка структура

#### Опште

Алатка структура омогућава анализирање и уређивање низова бајтова на основу кориснички задатих дефиниција структура, које се могу састојати од низова, унија, примитивних типова и набројивих вредности.

Поседује сопствени дијалог поставки, који се позива дугметом Поставке. Могу се подесити разне опције, попут стила приказа вредности (декадно, хексадекадно, бинарно). Могуће је изабрати које се дефиниције структура учитавају и које структуре се виде у приказу.

Структура се дефинише у фајлу Октетине дефиниције структуре (ИксМЛ формат са наставком `.osd`). На ово се додаје и `.desktop` фајл са метаподацима о фајлу описа структуре, попут аутора, домаће странице и лиценце.

Тренутно нема уграђене подршке за стварање и уређивање дефиниција структура, већ се то мора ручно радити како је описано у наредним одељцима.

#### Инсталирање дефиниција структура

##### Инсталирање преко врућих новотарија

Нове дефиниције структура најлакше се инсталирају путем подршке за вруће новотарије уграђене у Октети. Да бисте инсталирали постојећу структуру, отворите дијалог поставки алатке за структуре. У њему идите под језичак Управљање структурама и кликните на дугме Добави нове структуре.... Дијалог који се на то појави омогућава вам инсталирање и деинсталирање структура.

##### Ручно инсталирање дефиниција структура

Алатка структура тражи описе структура у потфасцикли `share/apps/okteta/structures/` корисничке фасцикле за податке програма̂ (коју налазите извршавањем ``kde4-config` `--localprefix``). Можда ћете морати да направите ову фасциклу, ако још увек нема ниједне инсталиране дефиниције структуре.

У наведеној потфасцикли, свака дефиниција структуре има своју потфасциклу која садржи и `.desktop` и `.osd` или `main.js` фајл дефиниције.

На пример, ако је фасцикла података програма̂ `.kde` а име дефиниције структуре `PrimerStrukture`, онда постоји фасцикла `.kde/share/apps/okteta/structures/PrimerStrukture` која садржи фајлове `PrimerStrukture.desktop` и `PrimerStrukture.osd`.

##### Коришћење инсталираних структура

Пошто инсталирате нову дефиницију структуре, да бисте је користили морате поново покренути Октету. Пошто то учините, отворите дијалог поставки алатке за структуре. Идите на језичак Управљање структурама и обезбедите да је одговарајућа дефиниција структуре активирана. Затим пређите на језичак Структуре и проверите да ли је жељени елемент приказан на десној страни.

#### Дељење дефиниција структура

За уобичајене структуре можда не морате сами стварати дефиниције, већ се можете послужити постојећим дефиницијама са места̂ попут http://kde-files.org.

Такође можете пожелети да поделите своје дефиниције. То чините тако што направите архиву (нпр. типа `.tar.gz`) која садржи само потфасциклу са `.desktop` фајлом и фајлом дефиниције структуре. Настављајући пример из претходног одељка, ово би била фасцикла `PrimerStrukture` са својим потпуним садржајем. Употреба овог формата за дељење дефиниција структура омогућава њихово инсталирање у Октети без ручних захвата.

#### Стварање сопствених дефиниција структура

Дефиниције структура можете правити на два начина. Први је писањем дефиниције у ИксМЛ‑у, а други употребом јаваскрипта. Приступ преко јаваскрипта омогућава стварање сложенијих структура, са могућностима попут оверавања структуре. Приступ преко ИксМЛ‑а пружа мање могућности и вероватно неће бити прошириван у будућности. Односно, подршка за ИксМЛ структуре ће постојати и даље, али је препоручено користити јаваскрипт.

##### Заједнички кораци за оба приступа

За сваку дефиницију структуре морају се направити два фајла. Један је `.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=Pera Peric
            X-KDE-PluginInfo-Email=pera.peric@nikadodjija.org
            X-KDE-PluginInfo-Name=simplestruct
            X-KDE-PluginInfo-Version=1.0
            X-KDE-PluginInfo-Website=http://www.nikadodjija.org/plugins/
            X-KDE-PluginInfo-Category=structure
            X-KDE-PluginInfo-License=LGPL
            X-KDE-PluginInfo-EnabledByDefault=false

- Икона коју Октета приказује за ову структуру може бити нека коју проналази ``kdialog` `--geticon``, или путања до иконе.

Сва поља би требало да су прилично очигледна, осим `X-KDE-PluginInfo-Name`. Вредност овог поља мора бити једнака имену фасцикле која садржи фајл, као и имену `.desktop` фајла. Ако се прави ИксМЛ дефиниција структуре, и име `.osd` фајла мора бити једнако овоме.

У овом примеру имали бисмо фасциклу по имену `simplestruct`, која садржи фајл `simplestruct.desktop`. Ако се структура дефинише ИксМЛ‑ом, фасцикла би такође садржала фајл `simplestruct.osd`. Ако бисмо користили јаваскрипт, фајл дефиниције би се уместо тога звао `main.js`.

##### Прва дефиниција структуре

За почетак дефинишимо врло једноставну пробну структуру која садржи само интегралне типове података (један знак и један 32‑битни цео број). У Ц‑у или Ц++у ово би се изразило као:

              struct simple {
                char aChar;
                int anInt;
                bool bitFlag :1;
                unsigned padding :7;
              };

Први корак је писање `.osd` фајла, који ћемо назвати `simplestruct.osd`:

              <?xml version="1.0" encoding="UTF-8"?>
              <data>
                <struct name="simple">
                  <primitive name="aChar" type="Char"/>
                  <primitive name="anInt" type="Int32"/>
                  <bitfield name="bitFlag" type="bool" width="1"/>
                  <bitfield name="padding" type="unsigned" width="7"/>
                </struct>
              </data>

што је сасвим слично дефиницији у Ц‑у и Ц++у. Атрибут `type` ознаке `primitive` може бити једно од:

- `Char`

- `Int8`, `Int16`, `Int32`, `Int64`

- `UInt8`, `UInt16`, `UInt32`, `UInt64`

- `Bool8`, `Bool16`, `Bool32`, `Bool64`

- `Float`

- `Double`

Ознака `bitfield` има два атрибута (не рачунајући атрибут `name` који имају све ознаке). Атрибут `width` говори Октети колико битова се користи за ово битско поље.

Никад не заборавите да додате испуну, јер ће иначе наредни примитив почети усред бајта. Осим, наравно, ако је ово тачно оно што желите.

Други атрибут је `type`, чија вредност може бити `bool`, `unsigned` или `signed`.

Направите фасциклу `simplestruct` унутар инсталационе фасцикле структура (погледајте одељак о ручном инсталирању дефиниција) и копирајте у њу ова два фајла. Сада можете поново покренути Октету и користити нову структуру.

##### Иста структура у јаваскрипту

Да бисмо извели исту структуру помоћу јаваскрипта, направимо фајл по имену `main.js` (уместо претходног `simplestruct.osd`), са следећим садржајем:

            function init() {
              var structure = struct({
                aChar : char(),
                anInt : int32(),
                bitFlag : bitfield("bool", 1),
                padding : bitfield("unsigned", 7),
              })
              return structure;
            }

Структура коју приказује Октета увек је повратна вредност функције `init`.

Следеће функције се могу позивати ради стварања примитивних типова:

- `char()`

- `int8()`, `int16()`, `int32()`, `int64()`

- `uint8()`, `uint16()`, `uint32()`, `uint64()`

- `bool8()`, `bool16()`, `bool32()`, `bool64()`

- `float()`

- `double()`

Функција `bitfield` узима два аргумента. Први је ниска `"bool"`, `"signed"` или `"unsigned"`. Други аргумент је цео број којим се задаје ширина у битовима.

##### Сложеније структуре

Прелазимо на дефинисање сложеније структуре, коју ћемо назвати `complex` и сачувати у фајл по имену `complex.osd`. Ова структура ће садржати два низа (један фиксне дужине а други коме се дужина одређује при извршавању), као и угнежђену структуру и унију.

              <?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>

Ово би одговарало следећем у псеудо‑Ц‑у/Ц++у:

    struct complex {
                uint8_t size;
                union aUnion {
                  int8_t fourBytes[4];
                };
                struct nested {
                  char string[size]; // није правилан Ц++, упућује на вредност uint8 size
                };
              };

Очигледно само низови динамичке дужине могу упућивати на поља пре низа.

Затим правимо фајл `complex.desktop` као у претходном примеру (не заборавите да исправно задате `X-KDE-PluginInfo-Name`) и на исти начин инсталирамо оба фајла.

##### Још информација

Неколико примера дефиниција структура може се наћи у ризници КДЕ‑а. Међу њима су, на пример, дефиниције заглавље ПНГ и ЕЛФ фајлова. ИксМЛ шема која описује структуру `.osd` фајла такође се налази у ризници. За још информација можете се писати на &Alex.Richardson.email;.

## Ставке менија

Приметите да већина наредби из менија̂ има и пречицу са тастатуре.

### Мени Фајл

Ctrl N Фајл Ново

- Ствара нови низ бајтова...

  - празан: ...без података.

  - из клипборда: ...према текућем садржају клипборда.

  - образац...: ...по датом обрасцу.

  - насумични подаци...: ...са насумичним подацима.

  - низ: ...са свим бајтовима од 0 до 255.

Ctrl O Фајл Отвори...

- Отвара постојећи фајл.

Фајл Отвори недавни

- Бирање са списка скорије отвараних фајлова.

Ctrl S Фајл Сачувај

- Уписује низ бајтова у задати фајл.

Фајл Сачувај као...

- Уписује низ бајтова у други фајл са новим именом.

Фајл Извоз

- Извози изабране бајтове у фајл...

  - вредности: ...кодиране као вредности бајтова.

  - обичан текст: ...кодиране као знакови.

  - база64: ...кодиран у формату база64.

  - Ц низ: ...дефинисане као низ у програмском језику Ц.

  - обичан текст (приказ): ...као у приказу података, са помаком, вредностима бајтова и знаковима.

F5 Фајл Учитај поново

- Одбацује све измене и поново учитава низ бајтова из фајла.

Ctrl P Фајл Штампа...

- Штампа тренутни низ бајтова.

Фајл Дозволе

- Поставља овлашћења за измене:

  Само‑за‑читање

- Кад је постављено, учитани низ бајтова не може да се мења.

Ctrl W Фајл Затварање

- Затвара тренутни низ бајтова.

Фајл Затвори све

- Затвара све низове бајтова.

Фајл Затвори све друге

- Затвара све осим текућег низа бајтова.

Ctrl Q Фајл Напусти

- Затвара прозор Октете.

### Мени Уређивање

Тренутно (у КДЕ‑у 4.4), једноставно копирање и исецање шаљу податке у клипборд са МИМЕ типом `application/octetstream`. Клипер не може да прикаже овакве податке, а ни већина других програма не уме да рукује њима, пошто су једноставно сирови подаци. Погледајте и подмени Копирање као.

Ctrl Z Уређивање Опозови

- Опозива последњу радњу.

Ctrl Shift Z Уређивање Понови

- Понавља последњу опозвану радњу.

Ctrl X Уређивање Исеци

- Брише изабране бајтове и копира их у клипборд.

Ctrl C Уређивање Копирај

- Копира изабране бајтове у клипборд.

Ctrl V Уређивање Налепи

- Умеће исечене или копиране бајтове из клипборда.

Уређивање Копирање као

- Копира изабране бајтове у клипборд...

  - вредности: ...кодиране као вредности бајтова.

  - обичан текст: ...кодиране као знакови.

  - база64: ...кодиран у формату база64.

  - Ц низ: ...дефинисане као низ у програмском језику Ц.

  - обичан текст (приказ): ...као у приказу података, са помаком, вредностима бајтова и знаковима.

Уређивање Уметни

- Уметни образац...

- Умеће задати низ бајтова код курсора.

  Дијалог садржи опције за задавање броја уметања и формата обрасца (хексадекадно, декадно, октално, бинарно, знакови, УТФ‑8).

Ctrl A Уређивање Изабери све

- Бира цео низ бајтова.

Ctrl Shift A Уређивање Поништи избор

- Поништава тренутни избор.

Ctrl E Уређивање Изабери опсег...

- Отвара угнежђени дијалог за уношење опсега за избор.

Insert Уређивање Режим пребрисавања

- Пребацује између режима уметања и пребрисавања.

  Режим пребрисавања изведен је врло строго. Није могућа измена величине података (бајтови се немогу надовезивати нити уклањати).

Ctrl F Уређивање Нађи...

- Тражи задати образац кроз документ.. Могу се тражити хексадекадни, октални, бинарни и текстуални обрасци.

  Кроз опције у дијалогу можете задати почетну тачку, смер и опсег претраге.

F3 Уређивање Нађи следеће

- Тражи следећи примерак обрасца задатог у Нађи....

  Ако образац није претходно задат, приказаће се дијалог.

Shift F3 Уређивање Нађи претходно

- Тражи претходни примерак обрасца задатог у Нађи....

  Ако образац није претходно задат, приказаће се дијалог.

Ctrl R Уређивање Замени...

- Смењује образац за тражење другим обрасцем.

Ctrl G Уређивање На помак...

- Помера курсор на задати помак.

### Мени Приказ

Ctrl+ Приказ Увеличај

- Повећава фонт.

Ctrl- Приказ Умањи

- Смањује фонт.

Приказ Без неисписивих знакова

- Укључује и искључује приказ невидљивих знакова.. Ако су укључени, на одговарајућим местима у колони знакова приказан је заменски знак.

F11 Приказ Приказ помака редова

- Укључује и искључује приказ помака редова лево од окна.

Приказ Приказ вредности или знакова

- Одређује које је од могућих тумачења бајтова приказано, једно од:

  - Вредности

  - Знакови

  - Вредности и знакови

Приказ Кодирање вредности

- Одређује кодирање вредности, једно од:

  - хексадекадно

  - декадно

  - октално

  - бинарно

Приказ Кодирање знакова

- Одређује кодирање знакова, једно од датих у подменију.

Приказ Динамички распоред

- Задаје правила за распоред приказа података. Овим се дефинише број бајтова по једном реду у зависности од ширине приказа. Могућа правила су:

  - Искључен: распоред је фиксиран на текући број бајтова по реду и не прилагођава се изменама величине приказа.

  - Преламај само целе групе бајтова: ставља највећи могући број бајтова у један ред, али тако да одржи групе бајтова потпуним.

  - Укључен: исто као претходно, али допушта непотпуне групе бајтова.

Приказ Режим приказа

- Одређује распоред приказа, један од:

  - Колоне: вредности и тумачења знакова приказани су у класичном распореду, свако у својој засебној колони.

  - Врсте: знаковно тумачење бајта приказано је непосредно испод вредносног тумачења.

Ctrl Shift T Приказ Подели водоравно

- Дели област тренутно фокусираног приказа на два дела и додаје копију текућег приказа у нову, нижу област.

Ctrl Shift L Приказ Подели усправно

- Дели област тренутно фокусираног приказа на два дела и додаје копију текућег приказа у нову, десну област.

Ctrl Shift R Приказ Затвори област приказа

- Затвара област тренутно фокусираног приказа.

Ctrl Shift F11 Приказ Преко целог екрана

- Укључује и искључује режим целог екрана.

### Мени Прозори

Пружа списак тренутних приказа. Одавде бирате активан прозор.

### Мени Обележивачи

На исти низ бајтова може се поставити више обележивача. Сваки низ бајтова има свој скуп обележивача, који је приказан на дну менија Обележивачи. Избором обележивача из овог менија померате курсор и приказ за њега.

Обележивачи су за сада пролазни, тј. не уписују се када затворите низ бајтова или цео програм.

Ctrl B Обележивачи Додај обележивач

- Обележи локацију унутар низа бајтова.

Ctrl Shift B Обележивачи Уклони обележивач

- Уклања текући обележивач. Ова наредба је расположива само ако је курсор на обележеној локацији.

Обележивачи Уклони све обележиваче

- Чисти списак обележивача.

Alt Up Обележивачи На претходни обележивач

- Помера курсор на претходни обележивач.

Alt Down Обележивачи На следећи обележивач

- Помера курсор на следећи обележивач.

### Мени Алатке

Списак инсталираних алатки, кроз који се може укључити и искључити приказ сваке од њих. Детаљан опис сваке алатке налази се у секцији о алаткама.

### Мени Поставке

Поставке Прикажи траку алатки

- Укључује и искључује траку алатки испод траке менија.

Поставке Прикажи траку стања

- Укључује и искључује траку стања.

Поставке Подеси пречице...

- Измените пречице за програмске радње.

Поставке Подеси траке алатки...

- Управљајте садржајем траке алатки.

### Мени Помоћ

&help.menu.documentation;

### Трака алатки

Трака алатки садржи иконе за следеће наредбе:

(Све се понашају истоветно наредбама менија.)

- Ново

- Отвори

- Сачувај

- Врати

- Штампај

- Опозови

- Понови

- Исеци

- Копирај

- Налепи

- Нађи

- Нађи следеће

## Заслуге и лиценца

Октета

(програм) © 2006–2010, Фридрих В.Х. Косебау &Friedrich.Kossebau.email;.

(документација) © 2008, 2010, Фридрих В.Х. Косебау &Friedrich.Kossebau.email;, Александер Ричардсон &Alex.Richardson.email;.

Превео Драган Пантелић falcon-10@gmx.de.

&underFDL; &underGPL;

## Инсталирање

### Како набавити Октету

&install.intro.documentation;

### Компиловање и инсталирање

&install.compile.documentation;
&documentation.index;