niedziela, 26 października 2008

Projektowanie schematów XSD w edytorze Emacs

Można używać nxml-mode do tworzenia schematów XSD. To odkrycie jest wynikiem szukania edytora/IDE ułatwiającego projektowanie Schemy. Oczywiście jest XMLSpy ale tylko dla MSW. Jest też jakiś moduł do netBeans, którego nie próbowałem... Niezbędny dla działania nxml-mode schemat do schemy w formacie RNG/RNC jest dostępny ze strony www.relaxng.org. W związku z tym odkryciem zmieniłem konfigurację emacsa:


(load "rng-auto.el")
;; http://www.emacswiki.org/emacs-en/NxmlMode
(add-to-list 'auto-mode-alist (cons (concat "\\."
(regexp-opt '("xml" "xsd" "rng" "xslt" "xsl" "svg" "rss") t) "\\'")
'nxml-mode))

Należy teraz ,,zarejestrować'' schemat do schemy w pliku konfiguracyjnym pakietu nxml-mode (schema/schemas.xml):


<uri pattern="*.xsd" typeId="XML Schema"/>
<namespace ns="http://www.w3.org/2001/XMLSchema" typeId="XML Schema"/>
<typeId id="XML Schema" uri="xmlschema.rnc"/>

Oryginalny schemat powoduje błąd: regular expression too big in xmlschema.rnc. Na tej stronie jest to dokładnie opisane i jest udostępniony plik .diff, tyle że nie byłem w stanie go zastosować uruchamiając patch. Poprawiłem plik ręcznie. Nie ma 100% gwarancji, że poprawka jest OK, ale dla kilku schematów nxml-mode działał poprawnie, więc szanse są, że tak jest. Poprawiony plik .rnc jest tutaj

Teraz wszystkie pliki XML (w tym szablony XSLT oraz schematy XSD) mogę edytować w trybie nxml (dowód w postaci zrzutu ekranu obok).

poniedziałek, 13 października 2008

Kopia zapasowa i rsync

Z myślą głównie o zdjęciach, których zbiór się rozrósł niebywale kupiłem dysk USB pn. My Book firmy Western Digital o pojemności 500 Gb. Ponieważ pierwsza próba kopiowania plików na ww. dysk skończyła się komunikatem, że plik już istnieje, co by wskazywało na Windziany system plików, sformatowałem go poleceniem:

/sbin/mkfs.ext3 /dev/sdb1


Teraz z kolei, zwykły użytkownik nie ma uprawnień do zapisu.
Pomogło wpisanie do /etc/fstab:




/dev/disk/by-id/usb-WD_5000AAV_External_57442D574341535535303634313031-0:0-part1 \
/media/external-disk ext3 noauto,user,rw 0 0

Do zrobienia kopii uruchamiam rsync:


rsync -avh --delete --exclude-from=/home/tomek/.rsync/exclude \
/home/tomek/ /media/external-disk/PC/tomek/
rsync -avh --delete --exclude-from=/home/eros/.rsync/exclude \
/home/eros/ /media/external-disk/PC/eros/

Uruchamiam powyższe jako root (w dokumentacji piszą żeby tego unikać, ale znalazłem też opinie przeciwne: Running rsync as root is perfectly fine. Consider this: your mail daemon is running as root all day, everyday.), bo inaczej kopiowanie kończy się komunikatem o błędzie. Format pliku ~.rsync/exclude ustaliłem empirycznie konsultując się z dokumentacją (na blogach dotyczących rsynca są proponowane prostsze formaty, ale u mnie nie chciały one działać):


- /Dist/**
- /.mozilla/**
... itd ...

Należy uważać przy korzystaniu z opcji --delete (por. wpis tutaj) i zwrócić uwagę na różnicę pomiędzy rsync dir dir2rsync dir/ dir2/.

Drugą kopię chcę zrobić na DVD. W tym wypadku archiwum nie wejdzie w całości i trzeba je podzielić na kawałki:


tar -cz katalog | split -d -b 1150m - archiwum.tgz && \
md5sum archiwum.tgz.* > archiwum.md5

Powyższe podzieli na kawałki wielkości 1,15Gb, które później mogą być nagrywane po 4 na DVD. Plik archiwum.md5 będzie zawierał sumy kontrolne. Scalenie i rozpakowanie wyglądałoby zaś następująco:


md5sum -c archiwum.md5 && cat archiwum.tgz.* | tar -xz

Jeszcze uwaga nt. strategii... starsze zdjęcia oraz pliki mp3, pdf itp... umieszczam w /cmn/. Ten katalog ,,robi'' za ,,wstępne'' archiwum. Kopiuję jego zawartość na USB/DVD, a to co jest niepotrzebne (np. zdjęcia z 2006 r.) sukcesywnie usuwam. Z tego względu:


rsync -avh /cmn/ /media/external-disk/PC/cmn/

Bez opcji --delete, bo to by spowodowało usunięcie plików z dysku USB.

sobota, 11 października 2008

Stłucz pan termometr, nie będziesz miał pan gorączki

Tytuł wpisu to cytat z Lecha Wałęsy aka dobra narodowego, który kiedyś w taki bezczelny sposób odpowiedział Andrzejowi Wielowieyskiemu. Dziś przeczytałem wpis na blogu Marka Shuttlewortha dotyczący globalnego kryzysu finansowego. Dla przypomnienia MS jest bardzo bogatym człowiekiem więc w temacie ekonomii ma jak to się mówi zweryfikowaną emirycznie wiedzę ekspercką (w przeciwieństwie do różnych pseudoekspertów z tytułami przed nazwiskiem) a do tego jest sponsorem projektu Ubuntu. Co pisze MS każdy może sobie przeczytać więc streszczać nie będę, przytoczę tylko jedno zdanie: Expect a steady flood of announcements of setbacks, restructurings and bankruptcies as companies that were bought with borrowed money turn out to be unable to service their debt.

A czemu tytuł wpisu brzmi Stłucz pan termometr, nie będziesz miał pan gorączki? A bo czynniki rządowe utrzymują, że wystarczy nie siać paniki -- w tym a zwłaszcza opozycja nie powinna tego robić -- a będzie dobrze. Być może jest to wersja dla publiki, a jednocześnie najtęższe głowy: min. Vincent i prof. LB w ścisłej tajemnicy deliberują nad planem B? :-) Może...