Programowanie_TCL_SDJ_6_2011.pdf

(6448 KB) Pobierz
637795992 UNPDF
637795992.015.png
Spis treści
6/2011 (198)
PROGRAMOWANIE TCL
04 Tcl:wirtualne systemy plików. Część I: podstawy
Piotr Bełtowski, Wojciech Kocjan
Wirtualne systemy plików (VFS) są wciąż słabo spopularyzowanym zagadnieniem wśród szerokiej rzeszy użyt-
kowników, i - jeśli w ogóle - kojarzą się przede wszystkim ze sposobem, w jaki systemy rodziny Unix/Linux uży-
wają przy dostępie do danych plikowych, a więc tematem zaawansowanym i leżącym poza zainteresowaniami
przeciętnego twórcy oprogramowania. Jeśli nie jesteś zatem programistą kernela, możesz niniejszy temat śmia-
ło odpuścić. Czy rzeczywiście?
PROGRAMOWANIE JAVA
12 Programowanie aspektowe w Javie
Marcin Lusa
W artykule tym zostaną przedstawione, podstawy programowania aspektowego w Javie z użyciem AspectJ.
Opisane zostaną również sposób działania tego narzędzia oraz jakie wynikają z tego ograniczenia.
18 Metaprogramowanie: podkręć Javę
Ireneusz Matysiewicz
Java jest stosunkowo prostym językiem programowania, co jest jednocześnie jej zaletą, jak i też wadą, gdyż wie-
le czynności wymaga więcej pracy niż w bardziej rozbudowanych językach. Na szczęście istnieje recepta na te
problemy: metaprogramowanie, które Java wspiera całkiem dobrze. Popularne frameworki dla Javy stosują po-
dobne techniki od lat, dlaczego tych by tych metod nie użyć we własnym kodzie?
BEZPIECZEŃSTWO GIER
24 Zabezpieczanie gier w technologii Flash
Roger Zacharczyk
Podobnie, jak aplikacje Javy, czy .NETa działają w wirtualnych maszynach, tak aplikacje przygotowane we Flashu
działają we Flash Playerze. Skoro odtwarzacz potrafi analizować pliki SWF, równie dobrze może to zrobić inny
program, jak np. dekompilator. Jeżeli więc z różnych względów nie chcemy, by osoby trzecie uzyskały dostęp do
kodu źródłowego naszej aplikacji, to należy odpowiednio się przed tym zabezpieczyć. Dlaczego? By np. w przy-
padku gier, w których użytkownicy rywalizują ze sobą, zapewnić autentyczność ich osiągnięć.
BAZY DANYCH
32 Microsoft SQL Server 2008 Integration Services
Paweł Wilkosz
Niniejszy artykuł prezentuje technologię Integration Services jako zestawu narzędzi ułatwiających implemento-
wanie procesów integracji danych pomiędzy plikami systemowymi aplikacji biznesowych a bazą danych Micro-
soft SQL Server 2008.
Miesięcznik Software Developer’s Journal
(12 numerów w roku) jest wydawany przez
Software Press Sp. z o.o. SK
Kierownik produkcji: Andrzej Kuca
andrzej.kuca@software.com.pl
Redakcja dokłada wszelkich starań, by publikowane
w piśmie i na towarzyszących mu nośnikach
informacje i programy były poprawne, jednakże nie
bierze odpowiedzialności za efekty wykorzystania
ich; nie gwarantuje także poprawnego działania
programów shareware, freeware i public domain.
Wszystkie znaki firmowe zawarte w piśmie są
własności odpowiednich firm.
Zostały użyte wyłącznie w celach informacyjnych.
Prezes: Paweł Marciniak
Adres korespondencyjny:
Software Press Sp. z o.o. SK,
ul. Bokserska 1, 02-682 Warszawa, Polska
tel. +48 22 427 36 91, fax +48 22 224 24 59
Dyrektor wydawniczy: Natalia Sieniutowicz
Redaktor naczelny: Łukasz Łopuszański
lukasz.lopuszanski@software.com.pl
www.sdjournal.org
cooperation@software.com.pl
Osoby zainteresowane współpracą prosimy o kontakt:
cooperation@software.com.pl
Skład i łamanie: Tomasz Kostro
www.studiopoligraficzne.com
Dział reklamy: adv@software.com.pl
637795992.016.png
Spis treści
INŻYNIERIA OPROGRAMOWANIA
38 Metody modelowania Inżynierii Oprogramowania
Artur Machura
Z pojęciem modelowania systemów informacyjnych, w tym systemów informatycznych związani są kierownicy,
analitycy, projektanci, programiści, testerzy, wdrożeniowcy – a więc praktycznie wszyscy uczestnicy przedsię-
wzięć IT. Różnorodność specjalizacji i kompetencji uczestników przedsięwzięć IT powoduje, że rzeczywiste wy-
korzystanie technik modelowania oraz języków modelowania praktycznie zawsze stwarza problemy.
Michał Kapłon
Czy tego chcemy czy nie, uczymy się przez cały czas. Najszybciej i najchętniej uczymy się oczywiście tego, co nas
najbardziej interesuje. Nie zawsze to wystarcza, czasami potrzebujemy dodatkowej wiedzy, lecz zdobywanie jej
może nie być już tak przyjemne. Nauczmy się uczyć rzeczy, które są nam najbardziej potrzebne. Pozyskujmy no-
we umiejętności szybciej oraz tak, by proces ten przynosił nam dodatkowo przyjemność.
FELIETON
46 Polski freelancer IT. Na drodze do prawdziwego freelancingu
Paweł Zdziech
Dlaczego freelancing, pomimo wielu niewątpliwych atutów, wciąż jest względnie niepopularną formą zawodowe-
go funkcjonowania? Jak wygląda życie freelancerów w sektorze IT w Polsce, a jak na Zachodzie? Kto jest praw-
dziwym freelancerem, a kto nim nie jest? Nie ma jednoznacznych odpowiedzi na te pytania. Mimo to, freelancing
jako pomysł na zawodowe życie jest na tyle ciekawy, by tematem zająć się dogłębniej.
Reklama
637795992.017.png 637795992.018.png 637795992.001.png
PROGRAMOWANIE TCL
Tcl: wirtualne systemy plików
Część I: podstawy
Wirtualne systemy plików (VFS) są wciąż słabo spopularyzowanym
zagadnieniem wśród szerokiej rzeszy użytkowników, i - jeśli w ogóle - kojarzą
się przede wszystkim ze sposobem, w jaki systemy rodziny Unix/Linux
używają przy dostępie do danych plikowych, a więc tematem zaawansowanym
i leżącym poza zainteresowaniami przeciętnego twórcy oprogramowania. Jeśli
nie jesteś zatem programistą kernela, możesz niniejszy temat śmiało odpuścić.
Czy rzeczywiście?
Dowiesz się:
• Po co istnieją wirtualne systemy plików (VFS)
• W jaki sposób Tcl obsługuje VFSy i jak je używać
Powinieneś wiedzieć:
• Znać podstawy jęzka Tcl
• Znać unixowe polecenie mount
Wirtualne systemy plików
Definicję czym jest wirtualny system plików możemy
sprowadzić do prostego sformułowania: dany zasób
„udaje” zwykły, lokalny system plików tak, że możemy ko-
rzystać z niego w sposób przeźroczysty, używając tych sa-
mych metod i poleceń co w przypadku prawdziwego syste-
mu plików .
Każdy z tych zasobów ma własną, wewnętrzną me-
todę przechowywania i zarządzania plikami, zaś system
VFS jest warstwą abstrakcji oferującą ujednolicony inter-
fejs dostępowy. Jakkolwiek temat może wydawać się od-
legły, okazuje się że często korzystamy z tego typu roz-
wiązań na codzień:
file czy glob . Od wersji 7.x interpreter Tcla posiada
własne API dostępu do systemu plików z poziomu języ-
ka C, przykrywające funkcje systemowe, co pozwoliło na
stworzenie warstwy abstrakcji.
W roku 1999, równocześnie z opublikowaniem wer-
sji Tcl 8.0 powstał komercyjny pakiet TclPro , a wraz nim
narzędzie prowrap pozwalające na „pakowanie” progra-
mów napisanych za pomocą skryptów Tclowych do po-
jedynczych plików wykonywalnych. Rozwiązanie to sta-
ło się bardzo popularne i każda następna wersja języ-
ka Tcl oferowała coraz lepsze wsparcie do dostarczania
aplikacji w tej postaci. Wraz z wersją Tcl 8.1 powstało
również pierwsze darmowe rozwiązanie do dostarcza-
nia aplikacji w Tcl/Tk jako samodzielny plik wykonywal-
ny – freeWRAP .
Od wersji 8.4 część Tcl C API odpowiedzialna za do-
stęp do plików została zmieniona. Jedną z ważniejszych
zmian jest możliwość rejestrowania wielu „dostawców”
( providers ) systemów plików – standardowym jest sys-
tem plików oferowany przez system operacyjny, okre-
ślany często mianem natywnego. Dzięki temu powstało
kilka innych rozwiązań – m.in. Tclkit , który stworzył rów-
nież system plików dedykowany dla języka Tcl/Tk oraz
jego nieformalny następca Cookit , który dzięki zmianach
w sposobie kompresji pozwala na generowanie znacznie
mniejszych plików wynikowych.
Dzięki temu, iż od ponad 10 lat język Tcl oferuje API
do operacji na plikach, wiele rozszerzeń napisanych
w czystym C nie ma kłopotów (tak długo jak używają
funkcji plikowych z Tcl C API zamiast z języka C) z po-
• dostęp do archiwów typu zip czy rar oferowany
przez TotalCommander
• TrueCrypt i jego wirtualne woluminy
Artykuł ten jest pierwszym z cyklu poświęconego two-
rzeniom zaawansowanych rozwiązań w oparciu o VFSy
i język Tcl. W tym odcinku zyskamy solidne podstawy
na temat architektury Tcla w kontekście wirtualnych
systemów plików, oraz poznamy kilka gotowych imple-
mentacji i ich zastosowania.
Wszystkie przykłady w niniejszym artykule były uru-
chamiane z użyciem dystrybucji ActiveTcl w wersji 8.5.x.
System plików w środowisku Tcl
Od początku istnienia język Tcl/Tk posiada funkcje po-
zwalające na dostęp do plików – takie jak polecenie open ,
4
6/2011
637795992.002.png
 
637795992.003.png 637795992.004.png 637795992.005.png 637795992.006.png
 
Tcl: wirtualne systemy plików
prawnym dostępem do zasobów zarówno w natywnym,
jak i w wirtualny systemie plików. Przykładem jest pa-
kiet graficzny Tk, który pozwala przykładowo na odczyt
obrazków wprost z archiwum lub pakiet Snack , oferują-
cy możliwość odtwarzania muzyki wprost z wirtualnego
systemu plików.
Ponadto sam Tcl obsługuje poprawnie ładowanie bi-
narnych rozszerzeń ( .dll lub .so ) z wirtualnych syste-
mów plików. Na systemach operacyjnych, które na to
pozwalają, dana biblioteka ładowana jest do pamięci i ini-
cjalizowana. W innych przypadkach kopiowana jest do
tymczasowego pliku, a po zakończeniu pracy automa-
tycznie usuwana.
stawu funkcji (poleceń Tcla) związanych z pobieraniem
informacji o katalogach i plikach. Polecenia te są odpo-
wiednikami niskopoziomowych funkcji języka C takich
jak access czy stat .
Pakiet tclvfs zawiera również kilka „gotowych” do-
stawców systemów plików – m.in. obsługę archiwów
zip , tar , czy dostęp do plików poprzez http lub ftp . Są one
nie tylko gotowymi do użycia implementacjami, ale rów-
nież – dzięki dostępowi do kodu źródłowego - znako-
mitym źródłem wiedzy. Tclvfs dostarczany jest z najpo-
pularniejszą dystrybucją języka Tcl – ActiveTcl firmy Ac-
tiveState.
Systemy plików a odczyt i zapis
Same systemy plików – zarówno te napisane w Tcl jak
i w C – oferują przede wszystkim operacje (np. kopio-
wanie czy usuwanie) na plikach i katalogach. Architektu-
ra języka Tcl zakłada, że każda operacja wejścia/wyjścia
wymaga skorzystania z kanałów, musimy o to zatrosz-
czyć się również w przypadku odczytu lub zapisu do pli-
ków ulokowanych w naszym VFSie.
Tcl pozwala na tworzenie kanałów w C, w Tcl oraz
nakładanie warstw ( stacking ). Pierwsze dwie opcje po-
zwalają na stworzenie nowego typu kanału. Przykłado-
wo pakiet zipvfs implementuje własne kanały w ce-
lu czytania plików wprost z archiwum zip (bez czyta-
nia całości pliku do pamięci). Najczęstszym rozwiąza-
niem jest jednak skorzystanie z gotowego rozwiązania
memchan .
Tcl oferuje standardowe typy kanałów – np. odczyt
i zapis do plików (natywny FS) oraz strumienie TCP/IP
do komunikacji sieciowej.
Nakładanie warstw na kanały pozwala na rozszerzenie
funkcjonalności istniejącego kanału – na przykład otwar-
cie pliku do odczytu i nałożenie warstwy odpowiedzial-
nej za kompresję czy szyfrowanie.
Czytanie lub zapis do pliku wymaga stworzenia kanału,
który pozwala na wykonanie tych operacji oraz - opcjo-
nalnie - polecenia, które zostanie wykonane po zamknię-
ciu pliku (tzw. callback ). Dzięki temu korzystając z ist-
niejącego mechanizmu memchan można zaimplemento-
wać podstawowe operacje na plikach – przy otwarciu
pliku jego poprzednia zawartość jest zapisywana do pa-
mięci, po jego zamknięciu nowa zawartość jest zachowy-
wana do pliku.
Wolumeny oraz dostawcy systemów
plików
Tcl zakłada istnienie wielu wolumenów, czyli ścieżek pod
jakimi dany system plików jest dostępny – na przykład są
to C:\ , D:\ i wszystkie inne dyski na systemach Windows
oraz / dla systemów typu Unix. W tym drugim przypad-
ku nie ma rozróżnienia pomiędzy urządzeniami fizyczny-
mi zarejestrowanymi w systemie – np. nawet jeśli w ka-
talogu /media/usbstick dostępny jest pendrive, Tcl nie
traktuje go osobny wolumen.
Każdy dodatkowy system plików może zarejestrować
się jako punkt montowania w istniejącym już wolumenie
– np /tmp/myvfs lub jako nowy wolumen jak na przykład
http:// czy ftp:// .
Czysty język Tcl pozwala na tworzenie własnych syste-
mów plików jedynie z poziomu C. W tym celu należy za-
implementować odpowiednie funkcje – takie jak pobie-
ranie zawartości katalogu, informacji o poszczególnych
plikach i katalogach oraz funkcje związane z otwieraniem
plików do odczytu lub zapisu - oraz zarejestrować nowy
system plików w środowisku Tcl.
Tworzenie systemów plików na poziomie
skryptów Tcl
Nie każdy użytkownik Tcla jest jednocześnie znawcą
języka C. Aby również i to grono programistów mo-
gło w pełni korzystać z uroków VFSów, powstał pa-
kiet tclvfs , który umożliwia implementację w oparciu
o czyste skrypty Tcl, bez potrzeby kodowania natyw-
nego i kompilacji. Analogicznie, również w tym przy-
padku wymagane jest zaimplementowanie pewnego ze-
Tcl C API
Chociaż Tcl jest językiem skryptowym, jego inter-
preter jest napisany w języku C. Budowa Tcla po-
zwala na tworzenie dodatkowych modułów ofe-
rujących nową funkcjonalność. Moduły te mogą
być pisane w Tclu lub w języku C. W tym drugim
przypadku, komunikacja z interpreterem przebie-
ga za pomocą wywołań odpowiednich funkcji z
Tcl C API.
Tclkit oraz Cookit
Są rozwiązaniami pozwalającymi na budowanie
samodzielnych aplikacji w oparciu o język Tcl. In-
terpreter Tcla wraz ze skryptami tworzącymi daną
aplikację są spakowane do pojedynczego wyko-
nywalnego pliku, który do uruchomienia nie wy-
maga żadnych zewnętrznych dodatków. Rozwią-
zania te opiszemy bliżej w następnych artykułach
tej serii.
www.sdjournal.org
5
 
 
637795992.007.png 637795992.008.png 637795992.009.png 637795992.010.png 637795992.011.png
 
637795992.012.png 637795992.013.png 637795992.014.png
 
Zgłoś jeśli naruszono regulamin