DefEcs v. 1.0 Podręcznik użytkownika

Spis treści:

1. Wprowadzenie
2. Ostrzeżenie
3. Umowa licencyjna
4. Główne okno
5. Zawartość domeny
6. Tablice i słowniki
7. Dodawanie nowego klucza
8. Usuwanie klucza
9. Modyfikacja wartości kluczy
10. Zapisywanie zmian
11. Ponowne ładowanie domen
12. Dodawanie nowych domen
13. Usuwanie istniejących domen
14. Cofanie operacji
15. Eksport i import domen
16. Preferencje użytkownika
17. Często zadawane pytania

## 1. Wprowadzenie

DefEcs jest programem, który w założeniu ma być narzędziem pomocnym w przeglądaniu i modyfikowaniu bazy danych ustawień domyślnych systemu Mac OS X. Dlaczego ktokolwiek miałby chcieć zaglądać do tej bazy? Można wskazać kilka powodów:

- ciekawość (1) - zawsze dobrze jest poznawać swój system operacyjny,
- ciekawość (2) - niektóre osoby mogą chcieć wiedzieć jakie informacje aplikacje zapisują w bazie danych ustawień,
- czyszczenie - niektóre aplikacje pozostawiają swoje ustawienia w systemowej bazie danych po ich odinstalowaniu (zwłaszcza gdy odinstalowanie sprowadza się do przeciągnięcia aplikacji do kosza); DefEcs ułatwia znajdowanie i usuwanie takich wpisów,
- zmiany w systemie operacyjnym - od czasu do czasu może okazać się przydatna możliwość dokonania ręcznie zmian w ustawieniach systemu operacyjnego (np. aby włączyć lub wyłączyć jakąś funkcję), a zwłaszcza tych, które nie są łatwo dostępne z poziomu panelu preferencji systemu,
- przywrócenie funkcjonowania aplikacji - w niektórych przypadkach (wskazujących na kiepską jakość programu) ustawienie pewnych wartości w preferencjach aplikacji powoduje, że aplikacja ta nie daje się poprawnie uruchomić (nawet w celu przywrócenia sensownych wartości w ustawieniach); inna droga zmiany lub usunięcia takich ustawień okazuje się wówczas przydatna,
- kopie zapasowe - DefEcs daje możliwość wyeksportowania bieżącego stanu bazy danych ustawień do pliku i późniejszego załadowania ich z powrotem do bazy systemowej,
- tworzenie oprogramowania - pomocnym może okazać się posiadanie narzędzia do sprawdzania i zmiany ustawień aplikacji, która jest właśnie tworzona lub testowana (w zasadzie był to główny powód powstania DefEcs) - z DefEcs łatwo jest sprawdzić czy tworzona aplikacja zapisuje swoje ustawienia w poprawnej postaci i miejscu oraz czy reaguje na zmianę ustawień w odpowiedni sposób,
- jakakolwiek sytuacja, w której zaglądanie do ustawień systemowych może okazać się przydatne lub pouczające.

Apple dostarcza narzędzie działające w wierszu poleceń o nazwie `defaults`, które również służy do przeglądania i manipulowania ustawieniami systemowymi. Aby dowiedzieć się więcej o tym narzędziu, otwórz terminal i wpisz `man defaults`.
Baza danych ustawień jest zorganizowana jako zbiór stałych domen (lub, którko, domen). Domena jest słownikiem (zobacz też rozdział Arrays and dictionaries w tym podręczniku), posiadającym unikalną nazwę. Nazwa zwykle odpowiada identyfikatorowi aplikacji (np. `pl.hipercom.DefEcs`), która wykorzystuje daną domenę do swoich potrzeb (w większości przypadków jedynym celem domeny jest przechowywanie preferencji użytkownika dla danego programu, pozycji okien, ostatnio odwiedzanych folderów i plików itp.). Domena składa się z par klucz-wartość. Klucze, lub nazwy kluczy, są po prostu fragmentami tekstu, wskazującymi na znaczenie wartości, które zawierają. Każda wartość posiada swój typ (w niniejszym podręczniku będziemy w skrócie mówić, że klucz posiada typ). Aktualnie obsługiwanymi typami są łańcuchy (tekst), liczby (logiczne, całkowite i rzeczywiste), daty i godziny, dane binarne (ciągi bajtów bez narzuconej interpretacji), tablice i słowniki. W ten sposób domena (która sama jest słownikiem) może zawierać kolejne słowniki (oraz tablice), które z kolei mogą zawierać więcej słowników (i tablic) itd. Jednak właściwe dane (informacje) są przechowywane w danych skalarnych (teksty, liczby, daty, dane binarne). Tablice i słowniki służą wyłącznie jako kontenery w celu organizacji danych.
Nie ma żadnych ograniczeń co do nazewnictwa domen z wyjątkiem tego, że nazwy muszą być unikalne (tzn. nie mogą istnieć dwie domeny o takiej samej nazwie). Ta zasada dotyczy wszystkich kluczy w słownikach - każdy klucz w słowniku musi być unikalny (musi posiadać unikalną nazwę).
Mogą istnieć pewne domeny nie związane z żadną konkretną aplikacją. Przykładem takiej domeny może być `NSGlobalDomain` - zbiór ustawień systemu operacyjnego, zawierający m. in. ustawienia językowe, konfigurację urządzeń zewnętrznych itp.
W niniejszym podręczniku przez klucz rozumieć będziemy kompletną parę klucz-wartość, podczas gdy nazwą klucza określać będziemy część klucz z pary klucz-wartość. Zatem zdanie "domena `x.y.z` zawiera klucz o nazwie `abc`, który jest słownikiem" oznacza, że w domenie `x.y.z` istnieje para klucz-wartość, w której część klucz jest nazwą `abc`, a część wartość jest słownikiem (być może zawierającym kolejne klucze, czyli pary klucz-wartość).
Do spisu treści...

## 2. Ostrzeżenie

Należy zachować szczególną ostrożność podczas manipulacji ustawieniami systemowymi. Zalecane jest korzystanie z DefEcs głównie jako przeglądarki. Przypadkowe zmiany ustawień systemowych, bez należytej wiedzy na temat przedmiotu i przyczyny zmian, może spowodować niestabilność systemu i/lub niektórych aplikacji.
Powyższe oznacza, że DefEcs może uszkodzić Twój system jeśli zostanie użyty nieodpowiedzialnie. Jak większość narzędzi, może być pomocny lub szkodliwy, zależnie od sposobu wykorzystania.
Przed edycją jakichkolwiek domen zaleca się wyeksportowanie bieżącego stanu bazy danych ustawień do pliku zewnętrznego (zobacz Eksport i import domen), aby zabezpieczyć sobie stabilną wersję do odtworzenia gdyby zmiany dały niepożądane skutki.
Proszę pamiętać, że mimo, iż DefEcs jest w formacie uniwersalnym dla platformy Mac na Intelu i PowerPC, został przetestowany tylko na architekturze PowerPC z Mac OS X 10.4 (Toger). Zgodnie z najlepszą wiedzą autora, powinien działać poprawnie na platformie Intela z Mac OS X 10.4.x lub nowszym (ponieważ jest linkowany wyłącznie z bibliotekami uniwersalnymi), jednak jest wysoce prawdopodobne, że nie będzie działał na wersjach Mac OS X wcześniejszych niż 10.4.
Do spisu treści...

## 3. Umowa licencyjna

Poprzez pobranie i zainstalowanie DefEcs Użytkownik zobowiązał się stosować do postanowień poniższej umowy licencyjnej.

Copyright (C) 2006 hipercom.pl Wszelkie prawa zastrzeżone. REDYSTRYBUCJA Zezwala się na redystrybucję w formie binarnej, bez modyfikacji, pod warunkiem, że spełnione zostaną poniższe wymagania: * Redystrybucje w formie binarnej muszą zawierać powyższą informację o prawach do produktu, niniejszą listę wymagań oraz następujące dalej rozdziały BRAK GWARANCJI i BRAK WSPARCIA, w dokumentacji i/lub innych materiałach załączonych w dystrybucji. * Ani nazwa firmy hipercom.pl, ani nazwy jej członków, nie mogą być wykorzystywane do celów promocyjnych produktów, nawet opartych na niniejszym oprogramowaniu, bez wcześniejszej zgody na piśmie. BRAK GWARANCJI Ponieważ program jest licencjonowany bezpłatnie, nie jest objęty gwarancją w zakresie dozwolonym przez obowiązujące przepisy. O ile na piśmie nie stanowi się inaczej, posiadacze praw autorskich i/lub inne strony zapewniają program w stanie, w jakim jest ("jak widać") bez jakiejkolwiek gwarancji, ani wyraźnej, ani domyślnej, w tym między innymi domyślnych gwarancji co do przydatności handlowej i przydatności do określonych zastosowań. Całość ryzyka w zakresie jakości i skuteczności działania programu ponosisz sam. W razie gdyby program okazał się wadliwy, ponosisz koszt całego niezbędnego serwisu, naprawy i korygowania. O ile obowiązujące prawo nie stanowi inaczej albo czegoś innego nie uzgodniono w formie pisemnej, żaden posiadacz praw autorskich ani inna strona modyfikująca i/lub redystrybująca program zgodnie z powyższymi zezwoleniami, w żadnym wypadku nie jest odpowiedzialna wobec ciebie za szkody, w tym szkody ogólne, specjalne, uboczne lub skutkowe, wynikłe z użycia bądź niemożliwości użycia programu (w tym, między innymi, za utratę danych lub powstanie danych niedokładnych, albo za straty poniesione przez ciebie lub strony trzecie, jak też niedziałanie programu z innymi programami), nawet jeśli dany posiadacz bądź inna strona zostali powiadomieni o możliwości powstania takich szkód. BRAK WSPARCIA hipercom.pl nie zapewnia żadnego bezpośredniego wsparcia dla swoich produktów darmowych. Wszelkie problemy związane z darmowym oprogramowaniem tworzonym przez hipercom.pl powinny być rozwiązywane w oparciu o Podręcznik Użytkownika załączony w pakiecie oprogramowania i witrynę WWW danego produktu.

Do spisu treści...

## 4. Główne okno

Główne okno aplikacji składa się z dwóch poziomo sąsiadujących paneli. Lewy panel jest widokiem listy domen. Pokazuje on wszystkie stałe domeny aktualnie zdefiniowane w bazie danych ustawień na stacji, na której działa DefEcs. Zawartość domeny wskazanej w widoku listy domen pokazywana jest w panelu po prawej - widoku zawartości domeny. Gdy zostanie wskazana inna domena (poprzez kliknięcie jej nazwy myszką lub wybranie jej w dowolny inny sposób, np. za pomocą klawiszy kursora), jej zawartość zostanie automatycznie pokazana, zastępując zawartość poprzednio wyświetlanej domeny.
Widok listy domen zawiera trzy kolumny. Kolumna oznaczona jako * (gwiazdka) wskazuje niezapisane zmiany w domenie. Jeśli obok nazwy domeny występuje w niej mały krzyżyk (x), dana domena została zmieniona przez użytkownika i jej nowa zawartość nie została zapisana do bazy danych ustawień. Kolumna o nazwie Nazwa domeny zawiera nazwy wszystkich stałych domen istniejących w systemie w momencie ostatniego ich załadowania przez DefEcs (albo przy starcie aplikacji, albo gdy została wykonana funkcja ponownego załadowania domen). Trzecia kolumna, oznaczona jako kl., pokazuje liczbę głównych kluczy w danej domenie. Poprzez główne klucze rozumiemy tu klucze zawarte w samej domenie traktowanej jako słownik - dana domena może zawierać znacznie więcej kluczy jeśli niektóre klucze główne są kontenerami (tablicami lub słownikami). Ponad listą domen znajduje się pole wyszukiwania. Wprowadzenie tekstu w tym polu powoduje wyszukanie i zaznaczenie domeny, której nazwa zawiera wprowadzony łańcuch.
Panel w prawej części głównego okna wyświetla zawartość zaznaczonej domeny. Panel ten został dokładniej opisany w rozdziale Zawartość domeny.
Można zmieniać rozmiar kolumn poprzez przeciąganie myszką w lewo lub w prawo granicy pomiędzy nagłówkami kolumn. Można również zmienić kolejność, w której kolumny są wyświetlane, poprzez przeciągnięcie myszką całego nagłówka kolumny i umieszczenie go pomiędzy innymi kolumnami. Rozmiar całego widoku listy domen i widoku zawartości domeny można zmieniać poprzez przeciąganie punktu rozdzielacza (małej kropki w pasku pionowego podziału pomiędzy widokami). Oczywiście zmiana rozmiaru całego okna powoduje odpowiednią zmianę rozmiaru widoków.
Do spisu treści...

## 5. Zawartość domeny

Domena składa się ze zbioru kluczy. Przez klucz rozumiemy wartość (lub zbiór wartości) wskazywaną albo poprzez nazwę (jeśli dana wartość jest elementem słownika) albo poprzez indeks (jeśli dna wartość jest elementem tablicy). Sama domena jest słownikiem, zatem każdy z jej kluczy głównych musi posiadać nazwę unikalną w ramach domeny. Nazwą klucza może być dowolny niepusty łańcuch. Każdy klucz (czyli para nazwa-wartość lub indeks-wartość) posiada typ. Typ definiuje jaki rodzaj danych można zachować w danym kluczu. Obsługiwanymi typami danych są:

- liczby - wartości logiczne, całkowite i rzeczywiste,
- daty - daty i/lub godziny,
- łańcuhy - napisy (w ogólności ciągi znaków unicode),
- dane binarne - ciągi bajtów bez narzuconej interpretacji (zwykle zawierają zakodowane obiekty),
- tablice - kontenery przechowujące zbiory kluczy, gdzie każdy klucz posiada unikalny indeks (liczbę porządkową),
- słowniki - kontenery przechowujące zbiory kluczy, gdzie każdy klucz posiada unikalną nazwę (łańcuch).

Ty raz przypisany do klucza nie może zostać zmieniony. Aby zmienić typ klucza, należy usunąć dany klucz i utworzyć go ponownie, z innym typem danych.
Widok zawartości domeny reprezentuje drzewiastą strukturę domeny. Każdy kontener (tablica lub słownik) może być rozwinięty aby pokazać jego zawartość. Jeśli pewne klucze w kontenerze same są kontenerami, one również mogą zostać rozwinięte itd. Aby rozwinąć kontener, kliknij dwukrotnie na jego nazwie lub jednokrotnie na małym trójkącie obok nazwy klucza.
Klucz NSFavoriteStyles jest zwinięty.
Ten sam klucz w stanie rozwiniętym.
W przykładzie powyżej, klucz NSFavoriteStyles jest słownikiem. Zawiera on 4 klucze o nazwach Italic, Outlined, Shadowed i Bold, które również są słownikami i jako takie mogą zostać rozwinięte. Z drugiej strony, klucz com.apple.sound.beep.feedback (nazwa obcięta do com.apple.sound.be... w przykładzie powyżej) jest liczbą (nie kontenerem) i nie może zostać rozwinięty.
Widok zawartości domeny posiada trzy kolumny. Pierwsza kolumna pokazuje nazwę lub indeks klucza, druga kolumna zawiera typ klucza, a trzecia pokazuje albo wartość klucza, albo liczbę podkluczy, jeśli dany klucz jest kontenerem. W przykładzie powyżej, klucz NSFavoriteStyles zawiera 4 podklucze, z których każdy jest słownikiem zawierającym jeden element.
Do spisu treści...

## 6. Tablice i słowniki

Aby zrozumieć zachowanie i pewne ograniczenia DefEcs, ważne jest poznanie własności tablic i słowników. Obydwa typy obiektów służą jako kontenery dla innych obiektów, tzn. same w sobie nie zawierają żadnych wartościowych danych (a jedynie inne klucze, które mogą przechowywać wartości lub również być kontenerami), a główną różnicą między nimi jest sposób identyfikacji obiektów wewnętrznych.
Każdy obiekt zawarty w tablicy posiada unikalny indeks - liczbę wskazującą pozycję (miejsce) obiektu w tablicy. Indeksy muszą być jednocześnie unikalne i ciągłe, począwszy od 0, przez 1, 2, 3 itd. W DefEcs, kiedy dodaje się nowy klucz do tablicy, jest on zawsze umieszczany na końcu tablicy (i niestety w aktualnej wesji nie ma możliwości zmiany kolejności elementów tablicy innej niż usunięcie kluczy i ponowne dodanie ich w innej kolejności).
In a dictionary, on the other hand, each value is identified by a name rather than an index. A name is just a piece of text. However, names in a dictionary must be unique (that is, no two objects can have the same name).
The items of an array are always displayed in the order based on their indices. In case of dictionaries, the order of items is irrelevant. Currently DefEcs displays them in the order their names are returned by the enclosing dictionary. Ordering of items based on the preferences of the user is a feature planned in the next version of DefEcs.
Do spisu treści...

## 7. Dodawanie nowego klucza

Aby dodać nowy klucz do aktualnie wybranego kontenera, wybierz Nowy klucz z menu Klucz lub wciśnij Command-N. Pytanie brzmi: do którego kontenera zostanie dodany nowy klucz? Stosowane są następujące reguły:

- jeśli domena jest pusta, nowy klucz będzie kluczem głównym w domenie,
- jeśli aktualnie zaznaczonym kluczem w widoku zawartości domeny jest elementem kontenera i element ten sam nie jest kontenerem, nowy klucz zostanie dodany do danego kontenera,
- jeśli aktualnie zaznaczony element jest kontenerem i jest on rozwinięty, nowy klucz zostanie dodany do tego kontenera,
- jeśli aktualnie zaznaczony element jest kontenerem i jest on zwinięty, nowy klucz zostanie dodany do kontenera nadrzędnego względem aktualnie wskazanego (jeśli aktualnie wskazanym jest kontener będący kluczem głównym, nowy klucz zostanie dodany do samej domeny jako klucz główny).

Załózmy, że mamy domenę zawierającą jeden klucz, który jest pustą tablicą. Jeśli dodamy nowy klucz gdy tablica jest w stanie zwiniętym (jak na ilustracji poniżej)
nowy klucz będzie dodany jako klucz główny w domenie. Jeśli tablica Key1 zostanie najpierw rozwinięta (jak na ilustracji poniżej - zwróć uwagę na kierunek trójkąta przy nazwie klucza: wskazuje on teraz w dół)
nowy klucz zostanie dodany jako pierwszy element (tzn. element nr 0) do tablicy Key1. Ta sama zasada dotyczy wszystkich poziomów zagnieżdżenia kontenerów.
Po wybraniu akcji Nowy klucz użytkownik zostanie poproszony o wprowadzenie nazwy klucza (jeśli klucz dodawany jest do słownika) i wybranie typu.
Jeśli klucz dodawany jest do tablicy, pole Nazwa będzie nieaktywne i będzie pokazywać indeks nowego elementu. Gdy typem klucza jest Tablica lub Słownik, klucz jest dodawany natychmiast po kliknięciu przycisku OK. Jeśli wybrano dowolny inny typ, po kliknięciu OK zostanie przedstawiony kolejny arkusz, który umożliwia wprowadzenie wartości klucza (zobacz Modyfikacja wartości kluczy). Jeśli, w dowolnym momencie, zostanie wybrany przycisk Anuluj, nowy klucz zostanie usunięty i żadna zmiana w domenie nie nastąpi.
Jeśli klucz dodawany jest do słownika, jego nazwa nie może pozostać pusta. W takim przypadku klucz nie zostanie dodany i zostanie wyświetlony komunikat o błędzie. Podobnie, jeśli zostanie podana nazwa już istniejąca w danym słowniku, zostanie pokazany komunikat o błędzie i operacja zostanie anulowana.
Po dodaniu klucza domena uważana jest za zmienioną, zatem pojawi się krzyżyk obok nazwy domeny w widoku listy domen. Nowy klucz nie jest umieszczany w bazie danych ustawień aż do momentu zapisania zmian w domenie (zobacz też Zapisywanie zmian), chyba że wybrano Natychmiast zapisuj zmiany w preferencjach DefEcs (zobacz też Preferencje użytkownika).
Dodanie nowego klucza może zostać cofnięte (zobacz Cofanie operacji).
Do spisu treści...

## 8. Usuwanie klucza

Aby usunąć klucz, należy go najpierw zaznaczyć w widoku zawartości domeny. Można usunąć pojedynczy element lub cały kontener. Jednakże nie jest możliwe usunięcie w jednym kroku wszystkich kluczy głównych z domeny. Należy wskazywać i usuwać kolejne klucze główne. W przypadku wszystkich innych (nie głównych) kluczy, zaznaczenie i usunięcie kontenera usuwa również całą jego zawartość.
W celu usunięcia klucza, wybierz Usuń klucz z menu Klucz lub wciśnij Command-D. Po potwierdzeniu klucz zostanie usunięty i widok zawartości domeny zostanie odpowiednio zaktualizowany.
Klucz nie jest fizycznie usuwany z bazy danych ustawień do momentu zapisania zmian w domenie (zobacz też Zapisywanie zmian), chyba że wybrano Natychmiast zapisuj zmiany w preferencjach DefEcs (zobacz też Preferencje użytkownika).
Usunięcie klucza może zostać cofnięte (zobacz Cofanie operacji).
Do spisu treści...

## 9. Modyfikacja wartości kluczy

Aby zmienić wartość klucza należy dwukrotnie kliknąć myszką jego nazwę w widoku zawartości domeny. Należy zaznaczyć, że nie jest możliwa edycja kontenerów. Dwukrotne kliknięcie na kontenerze rozwija go lub zwija.
Każdy typ klucza posiada związany z nim arkusz edycji. Tekst, liczby, daty, dane binarne - wszystkie one są edytowane we właściwy sobie sposób. Kiedy edytowana jest wartość tesktowa, arkusz pozwala na wprowadzenie wiersza tekstu. Aktualna wartość klucza jest zawsze wyświetlana w polu edycji, gotowa do zmiany. Jak w większości aplikacji, kopiowanie i wklejanie tekstu z innych okien działa także w przypadku arkusza edycji tekstu.
Gdy zostanie wybrana funkcja edycji wartości liczbowej, pojawi się arkusz przedstawiony poniżej.
Arkusz edycji liczby.
Wartość liczbowa może być całkowita, rzeczywista lub boolowska (logiczna). Wszystkie one są liczbami, choć wartości logiczne oznaczone są etykietą Logiczna w widoku zawartości domeny, podczas gdy wartości całkowite i rzeczywiste posiadają etykietę Liczba (technicznie rzecz ujmując, wszystkie one są obiektami klasy `NSNumber` lub `NSCFNumber` lub jednej z klas potomnych, jak `NSCFBoolean`). Kiedy wartość liczbowa zostanie dwukrotnie kliknięta myszką, arkusz edycji ustali rodzaj liczby zgodnie z wartością aktualnie w niej zapisaną (tzn. jeśli jest to wartość logiczna, aktywna będzie zakładka Logiczna, jeśli nie jest to wartość logiczna, a część ułamkowa liczby jest zerowa, aktywna będzie zakładka Całkowita, natomiast zakładka Rzeczywista będzie aktywna jeśli liczba ma niezerową część ułamkową).
Nowy typ liczby jest wyznaczany w zależności od tego, która zakładka jest aktywna w momencie kliknięcia przycisku OK. Zatem liczba może być zapisana jako wartość logiczna jeśli pozostawi się aktywną zakładkę Logiczna w momencie kliknięcia OK.
Arkusz edycji wartości logicznej.
Wszystkie niezerowe wartości oznaczają TAK w kontekście logicznym, podczas gdy zero oznacza NIE. Z drugiej strony, wartość logiczna TAK zawsze konwertowana jest do wartości liczbowej 1. Jednak w trakcie wyświetlania wartości logicznych w widoku zawartości domeny, DefEcs tłumaczy wartości liczbowe na wartości logiczne TAK lub NIE. Tym niemniej należy pamiętać, że każde TAK oznacza w istocie 1, a każde NIE jest zerem. Co więcej, jeśli wartość liczbowa zostanie zapisana jako rzeczywista, a jej część ułamkowa wynosi zero, następna edycja tego klucza spowoduje uaktywnienie zakładki Całkowita (DefEcs rozróżnia wartości całkowite i rzeczywiste kierując się wartością ich wartością ich części ułamkowych).
Gdy edytowana jest wartość typu data/godzina, arkusz zawiera pole ustalania daty.
Arkusz edycji daty/godziny.
Technicznie wartości typu data/godzina zapisywane są w bazie danych ustawień jako obiekty typu `NSCFCalendarDate`, które zdolne są przechowywać jednocześnie datę i godzinę. Jeśli godzina jest bez znaczenia w danym kontekście, można bezpiecznie pozostawić wartość 00:00. Zamiast wprowadzać datę z klawiatury, można podświetlić daną część daty i/lub godziny i użyć przycisków góra/dół (obok pola edycji) aby ustawić żądaną wartość.
Ostatnim edytowalnym typem klucza są dane binarne. Są one po prostu ciągiem bajtów (bajt jest wartością całkowitą z przedziału od 0 do 255 dziesiętnie lub od 00 do ff szesnastkowo).
Arkusz edycji danych binarnych.
Każdy bajt jest reprezentowany przez niewielki niebieski owal, z wartością liczbową wewnątrz. Dopuszczalna jest edycja wartości tylko w polach Szesnastkowo i Dziesiętnie. Pole ASCII pokazuje interpretację bajtów jako znaki (choć biorąc pod uwagę, że dane binarne zwykle zawierają zakodowane obiekty lub wartości własnych typów, reprezentacja ASCII jest niekiedy bezużyteczna). Po wprowadzeniu wartości w jednym z pól edycyjnych musisz wcisnąć spację aby wprowadzona wartość pojawiła się jako kolejny bajt (niebieski owal) i aby pozostałe pola zostały zaktualizowane (właśnie tak, wprowadzenie liczby szesnastkowej i wciśnięcie spacji powoduje zinterpretowanie tej liczby jako wartości dziesiętnej i kodu ASCII i uaktualnienie pozostałych pól).
Aby usunąć bajt z łańcucha, należy go zaznaczyć i wcisnąć klawisz Delete.
Nowa wartość klucza nie jest umieszczana w bazie danych ustawień do momentu zapisania zmian w domenie (zobacz też Zapisywanie zmian), chyba że wybrano Natychmiast zapisuj zmiany w preferencjach DefEcs (zobacz też Preferencje użytkownika).
Zmiana wartości klucza może zostać cofnięta (zobacz Cofanie operacji).
Do spisu treści...

## 10. Zapisywanie zmian

Jak wspomniano wcześniej, zmiany dokonane w domenie nie są fizycznie umieszczane w systemowej bazie danych do momentu zapisania zmian w domenie. Możliwe jest zapisanie pojedynczej domeny (funkcja Zapisz domenę z menu Domena lub kombinacja Command-S) lub wszystkich domen w jednym kroku (funkcja Zapisz wszystkie domeny z menu Domena lub kombinacja Command-Shift-S).
Nie jest możliwe zapisanie pustej domeny, tzn. domeny nie zawierającej żadnego klucza (ta zasada nie dotyczy pustych kontenerów wewnątrz domeny). Przy próbie zapisanie pustej domeny pojawi się komunikat o błędzie
Należy zaznaczyć, że ograniczenie takie wprowadza sam system ustawień, nie DefEcs. Fizycznie zapisanie pustej domeny jest równoznaczne z usunięciem tej domeny z bazy systemowej. Stąd, jeśli wystąpi próba zapisania pustej domeny, nie jest wykonywana żadna operacja, a jeśli domena była oznaczona jako zmodyfikowana (poprzez krzyżyk umieszczony obok jej nazwy w widoku listy domen), pozostaje ona oznaczona (ponieważ żadne zmiany nie zostały faktycznie zapisane w bazie danych ustawień).
Podobnie, jeśli wybrano funkcję zapisania wszystkich domen w jednym kroku, a choć jedna domena jest pusta, zostanie wyświetlone ostrzeżenie podobne do tego przedstawionego wyżej i tylko niepuste domeny zostaną zapisane do systemowej bazy danych ustawień. Wszystkie zmienione domeny oznaczone jako zmodyfikowane pozostaną oznaczone.
Należy jeszcze zauważyć, że zapisanie danych do bazy systemowej nie może zostać cofnięte. Jednakże, nawet po zapisaniu domeny można nadal cofać zmiany wykonane w tej domenie i ew. zapisać ją ponownie w poprzednim stanie (zobacz Cofanie operacji).
Jeśli zostanie włączona funkcja Natychmiast zapisuj zmiany w preferencjach użytkownika (zobacz Preferencje użytkownika), manualne zapisywanie domen nie jest konieczne. Po każdej operacji zmieniona domena zostanie automatycznie zapisana. Jedynym wyjątkiem są puste domeny (zobacz wyżej). Jeśli zostanie dodana nowa (pusta) domena, zostanie ona automatycznie zapisana po dodaniu do niej pierwszego klucza.
Do spisu treści...

## 11. Ponowne ładowanie domen

Jeśli dokonano zmian w domenie i zachodzi konieczność przywrócenia jej stanu z systemowej bazy danych, możliwe jest ponowne załadowanie domeny. Ponowne ładowanie powoduje utratę wszystkich zmian wykonanych w domenie i ładuje jej zawartość z bazy danych dysku systemowego. Jeśli wystąpi próba ponownego załadowania zmienionej domeny (oznaczonej krzyżykiem), pojawi się ostrzeżenie o utracie wszystkich wprowadzonych zmian w domenie. Kolejnym powodem ponownego ładowania domeny (lub wszystkich domen) jest chęć utrzymania aktualnego stanu wyświetlanych domen względem bazy danych w systemie. Podczas przeglądania i modyfikacji wartości w pewnym stanie bazy danych, inne aplikacje w tym samym czasie mogą również zmieniać stan ustawień. W pewnych przypadkach może zatem pojawić się potrzeba okresowego przeładowywania domen aby mieć pewność, że edytowana jest najbardziej aktualna ich wersja.
Aby przeładować pojedynczą domenę, należy zaznaczyć ją w widoku listy domen i wybrać Załaduj domenę z menu Domena lub wcisnąć kombinację Command-R. Aby przeładować wszystkie domeny, należy wybrać Załaduj wszystkie domeny z menu Domena lub wcisnąć kombinację Command-Shift-R.
Należy podkreślić, że przeładowanie wszystkich domen powoduje także uaktualnienie listy dostępnych domen. Zatem jeśli dodano nową domenę i nie została ona zapisana do bazy danych, taka domena zostanie utracona (ponieważ nie ma jej jeszcze w tym momencie w bazie danych). Wszystkie przeładowane domeny są oznaczane jako niezmienione. Przeładowanie domeny lub domen powoduje wyczyszczenie historii operacji do cofnięcia (tzn. nie jest możliwe cofnięcie żadnej operacji sprzed przeładowania domen), zatem zaleca się szczególną ostrożność przy korzystaniu z tej funkcji.
Do spisu treści...

## 12. Dodawanie nowych domen

Aby dodać nową domenę do bazy systemowej, należy wybrać element Nowa domena z menu Domena lub wcisnąć Command-Shift-N. Następnie należy wprowadzić nazwę nowej domeny. Proszę pamiętać, że nazwy muszą być unikalne i nie mogą być pustym łańcuchem. W takich przypadkach pojawi się komunikat o błędzie i domena nie zostanie dodana.
Nowa domena nie jest umieszczana w systemowej bazie danych do momentu wykonania funkcji zapisania zmian w domenie (zobacz też Zapisywanie zmian). Proszę zauważyć, że pusta domena nie może zostać zapisana, zatem po dodaniu nowej domeny a przed jej zapisaniem należy dodać do niej choć jeden klucz.
Dodanie nowej domeny może zostać cofnięte (zobacz Cofanie operacji).
Do spisu treści...

## 13. Usuwanie istniejących domen

Aby usunąć domenę wraz z całą jej zawartością z systemowej bazy danych, należy wybrać Usuń domenę z menu Domena lub wcisnąć Command-Shift-D. Po dodatkowym potwierdzeniu domena zostanie usunięta. Ta operacja jest natychmiast zapisywana w bazie danych ustawień (nie ma potrzeby osobnego zapisywania zmian zwłaszcza, że nie ma domeny do zapisania, ponieważ właśnie została ona usunięta).
Mimo, że usunięcie domeny skutkuje natychmiast w systemowej bazie danych, operacja ta nadal może zostać cofnięta (zobacz Cofanie operacji), w wyniku czego usunięta domena zostanie z powrotem dodana. Jednakże, po przywróceniu usuniętej domeny za pomocą operacji Undo (Cofnij), wymagane jest zapisanie zmian w przywróconej domenie (zobacz też Zapisywanie zmian).
Do spisu treści...

## 14. Cofanie operacji

Większość operacji dostępnych w DefEcs może zostać cofnięta i ew. powtórzona ponownie, jednak nie wszystkie. Aby cofnąć (anulować) ostatnio wykonaną operację, należy wybrać Undo [nazwa operacji] z menu Edycja lub wcisnąć Command-Z. Cofnięta operacja może zostać wykonana ponownie poprzez wybranie Redo [nazwa operacji] z menu Edycja lub wciśnięcie Command-Shift-Z.
Operacjami, które mogą zostać cofnięte są:

- dodanie klucza,
- usunięcie klucza,
- zmiana wartości klucza,
- dodanie domeny,
- usunięcie domeny.

Operacjami, które nie mogą zostać cofnięte są:

- ponowne załadowanie domeny,
- ponowne załadowanie wszystkich domen,
- import zawartości domen z pliku zewnętrznego.

Proszę pamiętać, że żadne operacje nie mogą zostać cofnięte (nawet te wymienione wyżej jako możliwe do wycofania) po ponownym załadowaniu domeny lub wszystkich domen z bazy danych systemu. Powodem takiego stanu jest fakt, że jeśli np. przeładowana zostanie domena, w której zmieniono wcześniej klucz, a w załadowanym stanie w ogóle nie ma takiego klucza, przywrócenie poprzedniej wartości klucza jest operacją bezsensowną. Aby uniknąć takich przypadków, przeładowanie domeny czyści historię operacji.
Po wycofaniu danej operacji, operacja wykonana przed nią staje się dostępna do cofnięcia i tak dalej, aż do osiągnięcia początku historii operacji, tzn. aż do cofnięcia pierwszej operacji wykonanej po ostatnim wyczyszczeniu historii.
Do spisu treści...

## 15. Eksport i import domen

DefEcs pozwala na eksport bieżącego stanu bazy ustawień do pliku zewnętrznego. Dobrą praktyką jest wykonanie eksportu bazy danych przed wykonaniem jakichkolwiek zmian, co daje możliwość przywrócenia stanu początkowego w razie wystąpienia problemów. Aby zapisać stan bazy danych w pliku należy wybrać Eksport wszystkich do pliku z menu Plik lub wcisnąć Command-Shift-E. Użytkownik zostanie poproszony o wybór folderu i wprowadzenie nazwy pliku. Domyślnym rozszerzeniem pliku, o ile nie zostanie wprowadzone inne, jest `.defdoms`. Formatem pliku jest domyślny format używany przez tzw. "keyed archiver" ze środowiska Cocoa (wskazówka: jeśli zmieni się rozszerzenie pliku na `.plist`, można będzie otworzyć taki plik domyślnym systemowym edytorem właściwości, jednak zawartość pliku nie będzie dokładnym odzwierciedleniem wyglądu bazy danych ustawień).
Aby zaimportować stan bazy danych z wcześniej utworzonego pliku, należy wybrać Import wszystkich z pliku z menu Plik lub wcisnąć Command-Shift-I. Po wybraniu pliku, zawartość domen z pliku zastąpi zawartość aktualnie wyświetlanych domen.
Proszę pamiętać, że import danych z pliku powoduje utratę wszystkich niezapisanych zmian.
Po zaimportowaniu zawartości domen z pliku zewnętrznego, wszystkie załadowane domeny będą oznaczone jako zmienione, a załadowane dane nie zostaną umieszczone w bazie danych do momentu zapisania zmian (zobacz też Zapisywanie zmian), nawet jeśli została wybrana funkcja automatycznego zapisywania zmian w preferencjach.
Istnieje również możliwość eksportu i importu pojedynczych domen. Ta funkcja jest użyteczna, jeśli planowane są zmiany tylko w pewnej domenie, a Użytkownik chce wcześniej wykonać jej kopię zapasową (w takim przypadku wykonanie kopii całej bazy nie jest najlepszym rozwiązaniem, ponieważ kiedy taka kopia zostanie załadowana, zostaną utracone również ewentualne zmiany w innych domenach, a takie zmiany mogły być w międzyczasie wprowadzone przez inne aplikacje).
Aby wyeksportować pojedynczą domenę, należy ją zaznaczyć w widoku listy domen i wybrać Eksport do pliku z menu Plik (lub wcisnąć Command-E). Domyślnym rozszerzeniem pliku zawierającego pojedynczą domenę jest `.defdom`. Aby zaimportować domenę, należy wybrać Import z pliku z menu Plik lub wcisnąć Command-I. Zaimportowana domena zostanie oznaczona jako zmieniona, a jej załadowana zawartość zostanie umieszczona w bazie danych dopiero po zapisaniu zmian (zobacz też Zapisywanie zmian).
Do spisu treści...

## 16. Preferencje użytkownika

Aby wyświetlić okno preferencji użytkownika w DefEcs, należy wybrać Preferencje z menu DefEcs lub wcisnąć Command-, (przecinek). Możliwe jest sterowanie zachowaniem DefEcs w następujących aspektach:

- Natychmiast zapisuj zmiany
  Jeśli zaznaczony, wszystkie zmiany wykonane w domenie będą automatycznie zapisywane w bazie danych. Zapisywanie ich za pomocą Command-S nie jest konieczne. Jednakże, jeśli zostanie dodana nowa (pusta) domena lub zostanie usunięty ostatni klucz z domeny (domena stanie się pusta), zmiany nie zostaną zapisane. Puste domeny nie są akceptowane przez bazę systemową (zobacz też Zapisywanie zmian).
- Wyszukiwanie domen
  Jeśli wybrano Podłańcuch w dowolnym miejscu, DefEcs zaznaczy pierwszą domenę zawierającą łańcuch wyszukiwania w nazwie (w dowolnym jej miejscu). Z drugiej strony, wybranie Podłańcuch na początku powoduje, że DefEcs zaznaczy daną domenę tylko jeśli jej nazwa zaczyna się łańcuchem wyszukiwania.
- Wyszukiwanie kluczy
  Opcje Podłańcuch w dowolnym miejscu i Podłańcuch na początku mają identyczne znaczenie, jak przy wyszukiwaniu domen. Ostatni parametr - Wyszukuj też w wartościach - decyduje o tym, czy dany klucz powinien zostać zaznaczony tylko jeśli jego nazwa pasuje do łańcucha wyszukiwania (opcja niezaznaczona), czy jeśli pasuje nazwa lub wartość (opcja zaznaczona). Jeśli jednocześnie zostaną wybrane Podłańcuch na początku i Wyszukuj też w wartościach, dany klucz zostanie zaznaczony tylko jeśli jego nazwa połączona z wartością (dokładniej, wartość dołączona na koniec nazwy) zaczyna się łańcuchem wyszukiwania.

Przycisk Wart. fabryczne przywraca wartości domyślne.
Wszystkie zmiany wprowadzane w oknie preferencji są stosowane natychmiast - nie jest wymagane ich zapisywanie. Aby zamknąć okno preferencji, należy użyć standardowego przycisku zamykania okna na pasku tytułowym.
Do spisu treści...

## 17. Często zadawane pytania

P:
Co oznacza nazwa DefEcs?
O:
Def pochodzi od Defaults a Ecs od X (jak w OS X).
P:
Czy naprawdę potrzebuję tej aplikacji?
O:
Nie wiem. Potrzebujesz? Podpowiedź: jeśli kiedykolwiek zdarzyło Ci się użyć programu `defaults`, działającego w wierszu poleceń, prawdopodobnie uznasz DefEcs za pomocne narzędzie.
P:
Czy zapewniacie wsparcie dla DefEcs?
O:
Zgodnie z umową licencyjną - nie. Jednak można wysyłać pytana i sugestie na adres `defecs@hipercom.pl` a odpowiedzi na najczęściej zadawane pytania znajdą się w FAQ na stronie produktu (a niektóre z nich zostaną dodane do pytań w podręczniku użytkownika w następnych wydaniach).
P:
Posiadam wersję Mac OS X wcześniejszą niż 10.4. Mogę korzystać z tego programu?
O:
Prawdopodobnie nie. Z powodu braku czasu i środków, testowaliśmy ten produkt jedynie na Mac OS X 10.4 (na PowerPC G4). Jest to poprawnie skompilowany program uniwersalny (universal binary), zatem powinien działać na platformie Intela na Mac OS X 10.4 lub późniejszych, jednak jest mało prawdopodobne aby działał na wersjach OS X wcześniejszych niż 10.4 (być może na zaktualizowanym 10.3.9...).
P:
Jak odinstalować DefEcs?
O:
Po pierwsze, użyj DefEcs aby usunąć domenę `pl.hipercom.DefEcs` ze swojej bazy danych ustawień (jeśli występuje). Później przeciągnij DefEcs.app do kosza.
P:
Chciałbym dodać wartość typu MojaWłasnaKlasa ale nie jestem w stanie. Dlaczego?
O:
Baza danych ustawień obsługuje jedynie podstawowe typy wymienione w arkuszu Nowy klucz w DefEcs. Wszystkie inne obiekty powinny być najpierw zakodowane do postaci danych binarnych a następnie dodane jako taki właśnie typ (właściwie odpowiedź jest nieco bardziej skomplikowana, ale zostańmy przy wersji uproszczonej). Niektóre obiekty kodują się do postaci słowników. Zatem jeśli jesteś programistą i chcesz dodać obiekt własnej klasy do systemu ustawień, użyj reprezentacji odpowiedniej dla swojego inicjalizatora klasy `initWithCoder:` (lub równoważnego mu w innych językach programowania).
P:
Czy planowana jest kolejna wersja DefEcs?
O:
Tak, odwiedź stronę www.hipercom.pl aby przeczytać o planowanych nowościach. Być może nowa wersja już została wydana.
P:
Posiadam kopię bezpieczeństwa bazy ustawień ale chcę przywrócić z niej tylko jedną domenę. Czy to możliwe?
O:
Tak. Po pierwsze, wyłącz parametr Zapisuj natychmiast wszystkie zmiany w preferencjach DefEcs (jeśli jest włączony) i zaimportuj domeny z posiadanej kopii. Wszystkie domeny zostaną zaimportowane i oznaczone jako zmienione. Teraz zaznacz i zapisz domenę, którą chcesz przywrócić (nie zapisuj wszystkich domen, tylko tą jedną, którą chcesz przywrócić). Zakończ DefEcs, wybierając Nie zapisuj gdy zostaniesz poinformowany o niezapisanych zmianach. To tyle - przywrócona pojedyncza domena. Oczywiście lepszym rozwiązaniem byłoby wyeksportowanie tylko jednej domeny przed jej zmianą jednak, zgodnie z podanym wyżej rozwiązaniem, nawet jeśli wyeksportowano całą bazę ustawień, nadal istnieje możliwość przywrócenia tylko wybranych domen z kopii bezpieczeństwa.
Do spisu treści...

© 2006 hipercom.pl. All rights reserved.