środa, 8 kwietnia 2015

BAZY DANYCH

Bazy danych


1.Bazy danych
Bazy danych to dziedzina informatyki, dynamicznie się rozwijająca i mająca szerokie zastosowanie w wielu miejscach wszędzie tam, gdzie niezbędne jest przetwarzanie jakichkolwiek danych. Rzadko spotykanym bowiem zjawiskiem jest aplikacja, która nie operuje na żadnych danych, a bazy niezwykle ułatwiają pracę z nimi. Zwykły użytkownik komputera, a nawet osoba, która z niego nie korzysta, spotyka się z bazami danych na każdym kroku. Czytelnik korzysta właśnie z serwisu, który nie istniałby bez bazy danych. Kupno biletu kolejowego, robienie zakupów czy nawet zwykłe wykonanie połączenia telefonicznego to czynności, które zazwyczaj nie kojarzą się z informatyką i z jej omawianym działem, a jednak korzystają z jego wytworów i mają z nim bardzo wiele wspólnego. Można zaryzykować stwierdzenie, że wiele innych dziedzin zarówno informatyki, jak i życia nie rozwijałoby się lub ich rozwój byłby ograniczony, gdyby nie istniały bazy danych. Problem przetwarzania informacji przez aplikacje istniał od początku istnienia programowania, a upływ czasu spowodował powstanie baz danych oraz systemów zarządzania bazami danych (silnikami baz danych). Jakiekolwiek operowanie na większych ilościach informacji implikuje bowiem rozwój tego działu informatyki.Zwroty "operowanie na danych", "większe ilości informacji" jest oczywiście nieprecyzyjny, a np. "silnik bazy danych" może być kompletnie niezrozumiały. Warto byłoby z początku sprecyzować zatem, co one (oraz inne im podobne) oznaczają, a w późniejszym czasie sformalizować w pewien sposób obszar, w jakim się poruszamy.
2.Informacje o bazach danych oraz o Systemach Zarządzania bazami danych
Na początek warto zdefiniować samo pojęcie "baza danych". Termin ten zależnie od kontekstu znaczy bowiem coś innego. Często mówi się bowiem: „używam bazy danych”, „baza danych PostgreSQL pozwala na...”, „schemat bazy danych”, „nazwa bazy danych potrzebna do zalogowania”, „parametry połączenia z bazą” itp., a w każdym z wymienionych zwrotów mamy na myśli coś innego. Najogólniej rzecz biorąc, „baza danych” to zbiór informacji wraz z możliwością łatwego dostępu oraz ich zmiany (tj. modyfikacją, dodawaniem nowych i usuwaniem starych) z poziomu aplikacji z niej korzystającej. W taki właśnie sposób rozumiane jest to określenie w pierwszym z wymienionych zwrotów. „Używam bazy danych” oznacza „korzystam ze zbioru informacji, który łatwo odczytywać i zmieniać”.Patrząc na temat pod tym kątem, można powiedzieć, że np. plik tekstowy można uznać za bazę danych jeśli odczytanie i modyfikację zapisanych w nim informacji w konkretnym zastosowaniu uznamy za łatwe (i symetrycznie – jeśli nie uznamy tego za łatwe nie można będzie pliku nazwać „bazą danych”). Przykładowo niech program wyświetla krótki komunikat, który powinien mieć możliwość dowolnej zmiany. Zastosowanie wtedy zwykłego pliku z tekstem jest jak najbardziej dobrym rozwiązaniem i można go nazwać „bazą danych”. Na rysunkach poniżej przedstawiono schematycznie sposoby, w jaki aplikacja może korzystać z danych. I tak rysunek 1 przedstawia najprostszą sytuację, kiedy dane, z jakich program korzysta, są wbudowane do niego na stałe.
Rys. 1 – Schemat programu z danymi wbudowanymi
Trudno w takim przypadku mówić o bazie danych, gdyż zazwyczaj nie istnieje możliwość zmiany zawartych w programie informacji, a na pewno jest to utrudnione. Rysunek 2 przedstawia sytuację pasującą do przykładu z zewnętrznym plikiem tekstowym.
Rys. 2 – Schemat programu korzystającego z bazy danych
 Zbiór na dysku zawiera potrzebne informacje i jest wydzielony od samej aplikacji. Pozwala to na łatwą ich modyfikację oraz odczyt. Jak widać, elipsa reprezentująca program i bazę danych nachodzą na siebie. Symbolizuje to fakt, iż program musi znać strukturę pliku podczas odczytu informacji z bazy oraz bezpośrednio w nią ingerować w trakcie ich modyfikacji. Struktura pliku jest tutaj rozumiana jako sposób przechowywania danych, która może być bardziej złożona niż ta wspomniana wyżej. Przykładowo jeśli aplikacja wyświetla kilka tekstów, niezbędnym staje się rozdzielenie ich jakoś w pliku, tak aby program był w stanie przeczytać bądź modyfikować konkretny z nich. Trzeba zatem wymyślić sposób, w jaki dane przechowywane są w bazie. Można by założyć zatem, iż jedna linijka w pliku tekstowym to jeden komunikat i skutecznie rozwiąże to przedstawiony problem. Spowoduje to jednak pojawienie się też trudności, jeśli okaże się, że wyświetlane komunikaty będą mogły zawierać znaki nowej linii. Program musi rozróżnić taki znak w środku tekstów od tego, który je rozdziela w samym pliku. Ponadto np. w nowszej wersji aplikacji może pojawić się potrzeba przechowywania poza samym tekstem komunikatu także innych informacji go dotyczących, np. jego rodzaj (informacja, ostrzeżenie, pytanie) oraz nazwę obrazka wyświetlanego obok. Spowoduje to konieczność zmiany struktury pliku i np. ustaleniu, iż każda linijka zawiera informacje o jednym komunikacie rozdzielone specjalnym znakiem przy czym znak enter oraz znak rozdzielający w samych danych nie mogą się pojawiać, aby nie spowodować problemów z ich interpretacją. W każdym razie wymusi to zmianę sposobu przechowywania danych, a to pociągnie za sobą konieczność zmiany już napisanego kodu korzystającego z niego. Skomplikujmy jeszcze nieco nasz przykład i załóżmy że, komunikatów jest bardzo dużo, a my chcemy wyświetlić wszystkie których rodzaj obrazka mówi, iż jest to ważny komunikat ostrzegawczy. Przeszukiwanie wtedy pliku i sprawdzanie każdej linijki może okazać się za wolne. Sprytny programista mógłby pogrupować wyświetlane teksty na podstawie rodzaju i utworzyć dla każdej grupy oddzielny plik w specjalnym katalogu, ale to z kolei pociągnie kolejne zmiany już napisanego kodu. Co będzie jednak, jeśli chcielibyśmy także przyspieszyć odczytywanie komunikatów wyświetlanych obok konkretnego obrazka znając jego nazwę? A jeśli aplikacji ma umożliwić wymianę bardziej złożonych informacji (np. finansowych) pomiędzy osobami znajdującymi się w różnych częściach świata? Sam plik na dysku twardym komputera wtedy nie wystarczy. W takim przypadku można by umieścić go na komputerze z dostępem do Internetu i korzystając z np. serwera FTP, czytać i zapisywać go (rysunek 3). Rozwiąże to drugi problem, jednak zwiększy pierwszy. Przeszukiwanie danych będzie wymagało każdorazowego przesłania zawartości pliku przez łącze sieciowe, co drastycznie zmniejszy wydajność.
Rys. 3 – Baza danych w postaci pliku z danymi na serwerze FTP 

Proszę zwrócić uwagę, że sam plik nie jest już nazywany „bazą danych”, gdyż umieszczony na serwerze sam nie pozwala na dostęp do zawartych w nich danych ani na ich modyfikację. Dopiero dane wraz z serwerem FTP tworzą twór zdefiniowany wcześniej jako baza danych. Przedstawione rozwiązanie jest zadowalające jedynie w marginalnej części przypadków, bo (pomijając mało wydajne przeszukiwanie), co się stanie, jeśli więcej niż jedna kopia programu jednocześnie będą chciały zapisać dane do tego pliku (rysunek 4)?
Rys. 4 – Wiele programów próbuje uzyskać dostęp do tego samego pliku

Czy „wejdą sobie w drogę”? Czy trzeba samodzielnie opracować jakiś mechanizm blokady? Program nie ma jednak łatwej możliwości sprawdzenia, czy dany plik z serwera FTP próbuje odczytać inna aplikacja próbująca korzystać z tych samych danych. „Wie” to serwer, ale nie udostępnia tej wiedzy. Problem komplikuje się jeszcze bardziej, jeśli dołożymy do programu możliwość zmiany nie tylko samych danych, ale także ich rodzaju i dodawaniu nowych typów przechowywanych informacji. Oczywiście można dodać do aplikacji kod, który na podstawie np. innych plików opisujących dane będzie „rozpoznawać”, jakie informacje są zapisane, i na tej podstawie dopiero będzie je same odczytywał (informacje opisujące inne informacje nazywane są „metadanymi”). Staje się to jednak niezwykle skomplikowane. Jak widać zatem, im bardziej wymagający jest program, tym bardziej złożona staje się obsługa danych i więcej pracy wymaga jego stworzenie, zarówno jeśli chodzi o stopień skomplikowania sposobu, w jaki trzymane są dane, jak i mechanizmy blokujące część informacji na czas ich modyfikacji oraz pozwalające na jednoczesny dostęp do nich wielu użytkownikom. Pisanie za każdym razem tak dużej części kodu byłoby nieefektywne i bardzo wydłużałoby proces tworzenia oprogramowania. Właśnie to ostatnie jest jednym z głównych powodów, dla których pomiędzy bazą danych (rozumianą jako zbiór informacji z określonym sposobem jego przechowywania) a programem wprowadza się dodatkowe „coś”, co rozwiązuje przestawione problemy. Tym czymś jest system zarządzania bazą danych, w skrócie SZBD (rysunek 5)
Rys. 5 – Program korzystający z danych umieszczonych w bazie zarządzanej przez silnik bazy danych 
 Często dla uproszczenia także nazywany bazą danych, tak jak miało to miejsce w zwrocie „baza danych PostgreSQL pozwala na...”, gdzie mowa o konkretnym takim systemie. Równie często spotyka się określenie „silnik bazy danych”. System zarządzania bazą danych przejmuje na siebie wiele obowiązków związanych z „technicznymi” aspektami przechowywania danych między innymi to, w jaki sposób są one trzymane na dysku. Dzięki temu, iż większość obecnie stosowanych silników bazy danych może działać jako oprogramowanie serwera możliwym staje się udostępnienie bazy dla komputerów na całym świecie. SZBD przejmuje na siebie także odpowiedzialność za blokowanie informacji na czas ich modyfikacji, by uniknąć konfliktów oraz pozwala dokonać wyszukiwania danych po stronie serwera, przez co do aplikacji trafiają tylko odfiltrowane dane, które są dla niej istotne. Program chcąc odczytać bądź zmodyfikować dane, musi korzystać z pośrednictwa SZBD. Aby to jednak było możliwe, SZDB i aplikacja muszą móc się „porozumieć”, co symbolizowane jest na rysunku przez przecinające się elipsy, lecz – jak widać – do danych bezpośredni dostęp ma jedynie SZBD.

3. Typy bazy danych
Bazy danych można podzielić według struktur organizacji danych, których używają:
Bazy proste:
bazy kartotekowe
hierarchiczne bazy danych
Bazy złożone:
bazy relacyjne
bazy obiektowe
bazy relacyjno-obiektowe
strumieniowe bazy danych
temporalne bazy danych
bazy nierelacyjne (NoSQL)
Z wymienionych struktur, w praktyce zdecydowanie najczęściej używane są bazy relacyjne.

a) BAZY KARTOTEKOWE
Kartotekowa baza danych (lub prosta baza danych) - baza danych złożona z jednej tablicy, która zawiera identyczną strukturę pól. Każda tablica danych jest samodzielnym dokumentem i nie może współpracować z innymi tablicami, w przeciwieństwie do relacyjnej bazy danych.Przykładami kartotekowej bazy danych są spisy danych osobowych czy spisy książek lub płyt. Poniższa baza składa się z jednej tabeli zawierającej 3 rekordy, z których każdy ma 4 pola.
Dane w kartotekowych bazach danych można sortować, przeszukiwać, stosować w nich filtry ograniczające zakres wyświetlanych informacji.Kartotekowe bazy danych można tworzyć w dowolnym programie zarządzającym bazami danych czy w arkuszach kalkulacyjnych, a nawet w prostych edytorach tekstów (pliki z wartościami oddzielanymi przecinkami - CSV, lub tabulatorami - TSV). Specjalne programy do tworzenia tego rodzaju baz są też dołączane do pakietów zintegrowanych, jak Microsoft Works. Użytkownik może w nich utworzyć nie tylko samą bazę, czyli tabele z danymi, ale i graficzny interfejs użytkownika, definiując położenie pól i dołączając rozmaite elementy uboczne powtarzające się przy przeglądaniu rekordów, jak np. grafikę.

b) BAZY RELACYJNE
Model relacyjny – model organizacji danych bazujący na matematycznej teorii mnogości, w szczególności na pojęciu relacji. Na modelu relacyjnym oparta jest relacyjna baza danych (ang. Relational Database) – baza danych, w której dane są przedstawione w postaci relacyjnej.W najprostszym ujęciu w modelu relacyjnym dane grupowane są w relacje, które reprezentowane są przez tablice. Relacje są pewnym zbiorem rekordów o identycznej strukturze wewnętrznie powiązanych za pomocą związków zachodzących pomiędzy danymi. Relacje zgrupowane są w tzw. schematy bazy danych. Relacją może być tabela zawierająca dane teleadresowe pracowników, zaś schemat może zawierać wszystkie dane dotyczące firmy. Takie podejście w porównaniu do innych modeli danych ułatwia wprowadzanie zmian, zmniejsza możliwość pomyłek, ale dzieje się to kosztem wydajności.
Schemat modelu relacyjnego

4.Struktura bazy danych
- Rekord (z ang. zapis, wpis do rejestru, dziennika) to zestaw danych, zazwyczaj posiadający ustaloną wewnętrzną strukturę, stanowiący pewną całość, ale mogący być częścią większego zbioru podobnych rekordów. Termin ten odnosi się do kilku różnych konkretnych zastosowań:w programowaniu rekord to obiekt (wartość, zmienna) posiadający pewną wewnętrzną niejednorodną strukturę.w bazach danych rekord to pojedynczy wpis do bazy,niektóre przestrzenie na nośnikach danych również nazywane są rekordami, np. zerowy sektor dysku: master boot record.
Rekord w bazie danych jest konstrukcją analogiczną do rekordu w języku programowania. Posiada strukturę wewnętrzną — podział na pola o określonym typie. Rekordem może być wiersz pliku tekstowego, a pola mogą być określone poprzez pozycję w wierszu lub oddzielane separatorami. W relacyjnych bazach danych rekord to jeden wiersz w tabeli, czyli jedna krotka w relacji. Podczas przetwarzania wyników zapytań do bazy danych, które mogą zawierać połączone dane z kilku tabel, pojedynczy wiersz również jest nazywany rekordem. W niektórych językach (np. Pascal) można definiować interfejsy do operowania na plikach na poziomie rekordów; wtedy cały plik jest traktowany jak zbiór rekordów, a czytanie i pisanie realizowane jest całymi rekordami.
-Pole rekordu to po prostu pole z jakaś dana lub danymi Każda zmienna elementarna w rekordzie nazywana jest polem. Rekordy są używane najczęściej do przechowywania zawartości pojedynczego wiersza w bazie danych. Do klucza podstawowego odnoszą się inne tabele w bazie.
-Klucz główny (ang. Primary Key) – pojęcie z zakresu teorii relacyjnych baz danych. Oznacza wybrany minimalny zestaw atrybutów relacji, jednoznacznie identyfikujący każdą krotkę tej relacji. To oznacza, że taki klucz musi przyjmować wyłącznie wartości niepowtarzalne i nie może być wartością pustą (null). Ponadto każda relacja może mieć najwyżej jeden klucz główny.Kluczem głównym może być dowolny klucz potencjalny, ale często stosuje się rozwiązanie polegające na utworzeniu specjalnego atrybutu, którego wartości domyślne pobierane są z sekwencji (tzw. autonumeracja), tak aby zapewnić unikalność klucza.
5.Obsługa Bazy Danych
5) Obsługa Baz danych
-Formularze
-Formularze są też określane jako „ekrany wprowadzania danych”. Stanowią one interfejs do pracy z danymi i często zawierają przyciski umożliwiające wykonywanie różnych poleceń. Można utworzyć bazę danych bez korzystania z formularzy, edytując dane w arkuszach danych tabel. Większość użytkowników baz danych woli jednak używać formularzy do przeglądania, wprowadzania i edytowania danych przechowywanych w tabelach.
Formularze usprawniają pracę z danymi, udostępniając łatwy w użyciu interfejs, a także umożliwiając dodawanie elementów funkcjonalnych, takich jak przyciski poleceń. Po odpowiednim zaprogramowaniu przyciski umożliwiają określanie danych wyświetlanych w formularzu, otwieranie innych formularzy lub raportów oraz wykonywanie wielu innych zadań. Przykładem może być formularz o nazwie „Formularz klienta” służący do pracy z danymi klienta. Taki formularz może zawierać przycisk otwierający formularz zamówienia, który pozwala wprowadzić nowe zamówienie dla danego klienta.
Dzięki formularzom można określać sposoby interakcji użytkowników z danymi zawartymi w bazie danych. Można na przykład utworzyć formularz wyświetlający tylko wybrane pola i udostępniający tylko określone operacje. Ułatwia to ochronę i poprawne wprowadzanie danych.
 
-Raporty
Raporty służą do podsumowywania i wyświetlania danych zawartych w tabelach. Zazwyczaj raport umożliwia odpowiedź na określone pytanie dotyczące danych, na przykład „Ile pieniędzy otrzymaliśmy od poszczególnych klientów w tym roku?” lub „W jakich miastach mają swoje siedziby nasi klienci?” Każdy raport można sformatować w sposób zwiększający czytelność danych.
Raport można uruchomić w dowolnym momencie, przy czym zawsze będzie on odzwierciedlał bieżące dane znajdujące się w bazie danych. Raporty są zazwyczaj formatowane z myślą o ich drukowaniu, ale można też wyświetlać je na ekranie, eksportować do innych programów lub wysyłać jako wiadomości e-mail.

-Kwerendy

Kwerendy stanowią podstawowe narzędzie baz danych, które może spełniać wiele różnych funkcji. Najczęściej są one używane do pobierania określonych danych z tabel. Często dane, które mają być pobrane, znajdują się w kilku tabelach — kwerendy pozwalają przeglądać takie dane w jednym arkuszu danych. Poza tym nie zawsze jest konieczne wyświetlanie wszystkich rekordów, dlatego przy użyciu kwerend można określać odpowiednie kryteria „filtrowania” danych, aby uzyskać dostęp tylko do potrzebnych rekordów. Kolejnym zastosowaniem kwerend jest dostarczanie danych dla formularzy i raportów.Niektóre kwerendy umożliwiają edytowanie danych w tabelach źródłowych za pomocą arkusza danych kwerendy. W przypadku używania kwerend aktualizujących należy pamiętać, że zmiany zostaną wprowadzone w tabelach, a nie tylko w arkuszu danych kwerendy.

Istnieją dwa podstawowe typy kwerend: kwerendy wybierające i kwerendy funkcjonalne. Kwerenda wybierająca pobiera dane i udostępnia je. Można wyświetlić wyniki takiej kwerendy na ekranie, wydrukować je lub skopiować do schowka. Wyniki kwerendy mogą też posłużyć jako źródło rekordów dla formularza lub raportu.
Kwerenda funkcjonalna, jak wskazuje jej nazwa, służy do wykonywania zadań związanych z danymi. Kwerendy funkcjonalne umożliwiają tworzenie nowych tabel, dodawanie danych do istniejących tabel oraz aktualizowanie i usuwanie danych.


6.Przykłady bazy danych
 
 




poniedziałek, 23 marca 2015

MULTIMEDIA I GRAFIKA KOMPUTEROWA

WELCOME BACK!
MULTIMEDIA I GRAFIKA KOMPUTEROWA
1.Rozwój grafiki komputerowej
- '50 Pierwsze monitory graficzne
-1962-Skechpad. Ivan Suthlerand
-1964-Algorytmy Graficzne. Uniwer. w UTAH
-1969-Evans&Suthlerand SIGGRAPH (ACM)
-1974-Laboratorium Graficzne (NY instutote of technology)
-1982-Tron StarTrek
-1983-Fraktale
-1984-Metoda Energetyczna (radiosity)
-1995-ToyStory
-2001-Photon Mapping (mapowanie fotonowe)

2.Przykłady zastosowania graf.komp
a)INTERFEJS UŻYTKOWNIKA
b)Wykresy w biznesie,nauce, technologii
c)Medycyna-diagnostyka medyczna,planowanie operacji (wspomoganie w kierowaniu urządzeniami)
d)Kreślenie i projektowanie wspomaganie komputerowe
e)Symulacja i animacja dla wizulacji naukowej i rozrywki
f)Przemysł filmowy
g)Grafika komputerowa (klastrowa, wektorowa

3.Podział grafiki komputerowej
-rastrowa(zbudowana z pixeli)
-wektorowa (obraz zbudowany z prostokątnej siatki tworzony z łuków geometrycznych i linii )

voxel-pixel przestrzenny
DPI-il pixeli na daną matrycę (il pixeli na cal)

b).pod względem charakteru przetwarzanychdanych-grafika: 2D;2,5D;3D
c)pod względem cyklu,sposobu generacji obrazu-grafika : nieinterakcyjna;interakcyjna;czasu rzeczywistego

4.Sposoby reprezentacji danych w programach komputerowych 
Grafika wektorowa – w tym przypadku nazwa może być nieco myląca, ponieważ obrazy mogą składać się nie tylko z wektorów (odcinków), ale również z innych figur geometrycznych. Cechą grafiki wektorowej jest to, że zapamiętywane są charakterystyczne dla danych figur dane (parametry), np. dla okręgu będzie to środek i promień, dla odcinka współrzędne punktów końcowych, a dla krzywych parametrycznych współrzędne punktów kontrolnych. Program, jeśli musi narysować obraz na urządzeniu (bądź to rastrowym, bądź wektorowym), na podstawie posiadanych danych wygeneruje obraz tych figur – bardzo ważną zaletą tej reprezentacji jest możliwość dowolnego powiększania obrazów, bez straty jakości.

5.Grafika rastrowa (bitmapową) - do zapamiętania obrazu rastrowego potrzebna jest dwuwymiarowa tablica pikseli nazywana powszechnie bitmapą. Nazwa wzięła się stąd, że początkowo były rozpowszechnione systemy wyświetlające obrazy czarno-białe, więc w takim przypadku pojedynczy piksel mógł być opisany przez jeden bit
6.Pixel- najmniejszy, niepodzielny element obrazu o stałej barwie. Najmnijeszy punkt  ekranu lub obrazu.
7.Rozdzielczość - rozmiar obrazka podany ilością pikseli w jego szerokości i wysokości.
DPI, PPI, LPI - Ilość pikseli na jednostkę długości; określa ile punktów będzie miał obraz w swojej szerokości; określenie stosowane głównie w przypadku urządzeń typu skaner, drukarka, ploter
8.Grafika 2D - grafika dwuwymiarowa. Termin ten może się odnosić zarówno do działu informatyki zajmującego się grafiką dwuwymiarową i technikami dotyczącymi jej obróbki, jak i do samych obrazów cyfrowych mogących składać się z tekstu, grafiki oraz obiektów 2D.
Grafika komputerowa 2D rozpoczęła swój rozwój w latach 50. XX wieku od urządzeń grafiki wektorowej. Z czasem zostały one wyparte przez urządzenia grafiki rastrowej. Język PostScript oraz system X Window były jednymi z najważniejszych projektów w tej dziedzinie.
 9.Grafika 2,5D - (grafika dwui pół wymiarowa), również pseudo-3D – określenie systemów generujących grafikę, które próbują wywołać złudzenie trójwymiarowości, wykorzystując zasady rzutu izometrycznego (lub innej aksonometrii) i operując dwuwymiarowymi zestawami tzw. duszków.
Klasycznym przykładem gry z takim sposobem wizualizacji jest Wolfenstein 3D. Ten sposób jest również wykorzystany w Mapach Google'a do wizualizacji budynków w większych miastach.
Kategoria: Graf.
10. Grafika 3D - - grafika trójwymiarowa, nazwa jednej z dziedzin grafiki komputerowej, zajmującej się głównie wizualizacją obiektów trójwymiarowych. W tym typie grafiki obiekty są umieszczone w przestrzeni trójwymiarowej i celem programu komputerowego jest przede wszystkim przedstawienie trójwymiarowego świata na dwuwymiarowym obrazie. Geometria obiektów trójwymiarowych może byd reprezentowana na kilka sposobów:
11.Grafika nieinterakcyjna-program wczytuje uprzednio przygotowane dane i na ich podstawietworzy wynikowy obraz. Tak działaprogram, który wczytuje z pliku definicję scenytrójwymiarowej i na jej podstawie generuje obraz sceny.
12.Grafika interakcyjna-program na bieżąco uaktualnia obraz w zależności od działao użytkownika, dzięki temu użytkownik może od razu ocenia skutki. Bardzo ważne w tym przypadku jest, że czas odświeżenia obrazu nie może byd zbyt długi. Dlatego w przypadku grafiki interakcyjnej akceptuje się i stosuje uproszczone metody rysowania obiektów,aby zminimalizowal czas oczekiwaniana wizualizację działań użytkownika.
13.Grafika czasu rzeczywistego-program musi bardzo szybko (kilkadziesiąt razy na sekundę)generowad obraz, aby wszelkie zmiany były natychmiast uwidocznione. Grafika czasu rzeczywistego ma szczególnie dużeznaczenie w różnego rodzaju symulatorach oraz jest powszechna w grach komputerowych.
14.Konkretną barwę można zmierzyd w zastanych warunkach za pomocą odpowiednichurządzeo (np. spektrofotometrem)i przedstawid w postaci liczbowej umieszczając jąwokreślonej przestrzeni barw.Żaden pomiar nie jest jednak w stanie oddad subiektywnegoodczucia barwy przez oko ludzkie.
15.Barwy chromatyczne(barwy kolorowe)-wszystkie kolory, w których można wyróżniddominantę, chodby niewielką, jakiejś barwy-są to wszystkie kolory prócz czerni, bieliiwszystkich szarości
16.Barwy dopełniające-pary barw, które połączone ze sobą w równych proporcjach dają(wzależności od metody łączenia)-czero, biel lub szarośd.Barwy dopełniające to pary barwdopełniające się do achromatyczności. Najczęściej są przedstawiane jakobarwy leżącenaprzeciwko siebie w kole barw 
17.Koło barw-graficzny model poglądowy służący do objaśniania zasad mieszania sięipowstawania barw, mający postad koła, w którym wokół jego środka zgodnie z kierunkiemruchu wskazówek zegara wrysowano widmo ciągłe światła białegojak na poniższym rysunku.
18.Model RGB wykorzystywany jest tam, gdzie źródłem barwy jest światło.
19.MODEL CMY–substraktywna synteza koloru Do opisu kolorów uzyskanych z urządzen pasywnych, takich jak drukarki czy plotery,stosuje się model CMY, oparty na kolorach: Cyan (turkusowym), Magenta(purpurowym)oraz Yellow(żółtym
20.MODEL HSB-oznaczany też jakoHSVNazwa zang.HueSaturationValue/Brightness (HSV/HSB)–model opisu przestrzeni barwzaproponowany w 1978 roku przez Alveya Raya Smitha.Tłumacząc na polski–odcieo(spektrum), nasycenie, wartośd/jasnośd
http://zs9elektronik.pl/naszeprace/raftra/skryptgk.pdf
21- PARAMETRY OBRAZU- podst parametrami obrazu cyfr są:...

środa, 15 października 2014

Hypper Text Makeup Language

HTML (ang. HyperText Markup Language) – hipertekstowy język znaczników, obecnie szeroko wykorzystywany do tworzenia stron internetowych
.
 



HTML pozwala opisać strukturę informacji zawartych wewnątrz strony internetowej, nadając znaczenie poszczególnym fragmentom tekstu – formując hiperłącza, akapity, nagłówki, listy – oraz osadza w tekście dokumentu obiekty plikowe np. multimedia bądź elementy baz danych np. interaktywne formularze danych.
HTML umożliwia określenie wyglądu dokumentu w przeglądarce internetowej. Do szczegółowego opisu formatowania akapitów, nagłówków, użytych czcionek i kolorów, zalecane jest wykorzystywanie kaskadowych arkuszy stylów.
W składni HTML wykorzystuje się pary znaczników umieszczone w nawiasach ostrokątnych, np. <title> i </title> lub <h1> i </h1>.
HTML pozwala również na osadzanie ciągów instrukcji języków skryptowych, umieszczonych pomiędzy znacznikami <script> i </script>
Należy nadmienić, że HTML, będąc językiem znaczników, nie jest zaliczany do języków programowania – w jego składni nie przewidziano wyrażeń obliczeniowych, warunkowych czy iteracyjnych.
Ważną cechą HTML-a, która przyczyniła się do popularności systemu WWW oraz Internetu, jest niezależność od systemu operacyjnego i wykorzystywanego sprzętu komputerowego.


Język HTML składa się z kilku kluczowych komponentów:
  • znaczników (i ich atrybutów),
  • typów danych,
  • referencji znakowych,
  • odwołań w postaci encji,
  • deklaracji typu dokumentu.
Prosty przykład strony WWW w HTML-u z ustawieniem języka polskiego:

 

poniedziałek, 13 października 2014

Bezpieczeństwo w SIECI



Sieć Internet w swojej pierwotnej postaci, podobnie jak i system operacyjny Unix, miała służyć przed wszystkim środowisku akademickiemu. W ostatnich latach, ze względu na dynamiczny rozwój Internetu i jego wykorzystywanie m.in. do celów komercyjnych stało się jasne, że niezbędne jest położenie większego niż do tej pory nacisku na kwestie bezpieczeństwa.

Dla zapobiegania naruszeniom bezpieczeństwa komputerów, informowania o znanych zagrożeniach i sposobach ich unikania, pomocy przy usuwaniu skutków ewentualnych naruszeń i koordynowania odpowiednich działań międzyinstytucjonalnych powołano w USA organizację o nazwie CERT. Organizacja ta wydaje m.in. biuletyny rozpowszechniane w sieci informujące o nowo poznanych zagrożeniach. Posiada swoje odpowiedniki w wielu krajach. Jak dotąd, nie istnieje polski odpowiednik CERT.



Zagrożenia bezpieczeństwa w sieci Internet można ogólnie podzielić na następujące klasy:
-uzyskanie dostępu do danych transmitowanych przez sieć lub przechowywanych na dołączonych do sieci komputerach przez osoby niepowołane;
-uzyskanie dostępu do innych zasobów (moc obliczeniowa komputerów itd.) przez osoby niepowołane;  -utrata danych na skutek złośliwej ingerencji zewnętrznej;  -
fałszerstwo danych (dotyczy zwłaszcza poczty elektronicznej, gdzie zachodzi m.in. możliwość podszywania się pod innego nadawcę).



Techniki, jakimi można posłużyć się dla osiągnięcia któregoś z w/w celów, opierają się przede wszystkim na wykorzystaniu:

- wad protokołu TCP/IP i protokołów pokrewnych (DNS, SMTP);

- błędów w oprogramowaniu systemowym.

- błędów administratora lub użytkownika systemu.



W każdej z powyższych kategorii można podać liczne przykłady, jak również sposoby zabezpieczania się przed tymi metodami. I tak np. mechanizmy TCP/IP pozwalają na fałszowanie adresu IP nadawcy pakietu - komputer do którego adresy te docierają, interpretuje je jako wysłane przez inny komputer, niż w rzeczywistości miało to miejsce. Sposobem na zabezpieczenie się przed taką formą ataku jest rezygnacja z usług sieciowych, które opierają autentyfikacją (sprawdzenie tożsamości użytkownika) na jego adresie IP (np. NFS w wersji podstawowej), lub ograniczenie ich do lokalnej podsieci (ukrytej za routerem filtrującym "podejrzane" pakiety).

Protokół TCP/IP nie zawiera wbudowanych mechanizmów szyfrowania przesyłanych danych. Umożliwia to przechwytywanie danych przez osoby trzecie, zwłaszcza w przypadku mediów transmisyjnych takich jak Ethernet, funkcjonujących na zasadzie magistrali. Czynione są obecnie próby włączenia szyfrowania (enkrypcji) danych jako opcji w nowej wersji protokołu IP (IPv6); tymczasowym rozwiązaniem jest stosowanie szyfrowania nie w warstwie transmisyjnej (TCP/IP), lecz na poziomie aplikacji. Przykładowe rozwiązania zostaną omówione poniżej.

Najczęstszym sposobem naruszenia bezpieczeństwa w sieci jest pozyskanie dostępu do cudzego konta na komputerze pracującym w systemie wielodostępnym (np. Unix) przyłączonym do sieci Internet. Cel ten można osiągnąć między innymi wykorzystując błędy w oprogramowaniu systemowym. Typowym przykładem jest błąd odkryty niedawno m.in. w systemie AIX (wersja Unixa firmy IBM), umożliwiający dowolnemu użytkownikowi na dowolnym komputerze w sieci Internet dostęp do konta "root" (tzn. administratora systemu) każdego komputera w sieci Internet pracującego pod systemem AIX. Tego typu naruszenie bezpieczeństwa tradycyjnie określa sie "włamaniem" do komputera. Włamanie na konto administratora jest szczególnie niebezpiecznym przypadkiem, umożliwia bowiem włamywaczowi dostęp do danych wszystkich użytkowników danego komputera, a także ułatwia zatarcie w systemie śladów włamania.



Przyczyny i rodzaje zagrożeń związanych z funkcjonowaniem sieci i podłączeniem do Internetu.





Sniffing (podsłuch (dosł. węszenie) transmisji danych) Używając programów typu analizator pakietów można "podsłuchać" transmisję TCP, taką jak np. sesje TELNET czy FTP, gdzie wszystkie wymieniane dane to "gołe" pakiety i dzięki temu przechwycić hasło wymagane przy logowaniu się, po przechwyceniu hasła można wejść na konto użytkownika i spróbować wykorzystać np. exploita dzięki któremu spodziewamy się dostać prawa administratora. Warto zauważyć że programy tego typu korzystają z "promiscous mode", a więc aby uruchomić taki program należy JUŻ mieć gdzieś prawa administratora systemu (najlepiej w domenie gdzie znajduje się obiekt naszego ataku), takie programy to LanWatch, IPtrace, snoop, sniffit, LinuxSniffer, Ipinvestigator, strobe.



Spoofing (podszywanie się pod legalną "zarejestrowaną" maszynę) podszywanie ma na celu ominięcie zabezpieczeń związanych z dostępem do usług tylko dla wybranych adresów, np. tylko lokalni użytkownicy mogą korzystać z usługi która może okazać się niebezpieczną po udostępnieniu jej światu zewnętrznemu. Programy reprezentujące ten typ ataków to: fakerwall i spoofer.



Cracking (łamanie haseł z passwd metodą słownikową, lub też próbkowanie programu autoryzującego słowami z odpowiednio przygotowanych słowników). Są jeszcze systemy, gdzie "czyste" passwd można sobie skopiować przez TFTP, lub też po "zorganizowaniu" sobie konta zwykłego użytkownika skopiować passwd, i programem crack z odpowiednią ilością słowników próbkować po kolei wszystkie konta. Dostęp do passwd można też uzyskać wykorzystując tzw. błąd phf niektórych serwerów webowych i ich CGI, istnieją nawet programy wyszukujące takie serwery. Można też próbkować w ten sposób sam program autoryzujący (np. w POP3) , lecz jest to łatwe do wykrycia, ze względu na ruch generowany w sieci i obciążenie maszyny autoryzującej.



Hijacking (przechwytywanie zdalnej sesji legalnego użytkownika systemu), metoda przejęcia sesji użytkownika oparta o mechanizm połączeniowy protokołu TCP (3-way handshaking) na czym opiera się TELNET, oraz wygenerowanie odpowiedniego numeru sekwencyjnego. Forma ataku, którą trudno jest wykryć, a użytkownik którego sesja jest przechwytywana, może zorientować się że cos jest nie tak, po nagłym 'resecie' sesji, lub później przeglądając to co robił, programem 'history'. Administrator może rozpoznać tę formę ataku po wykryciu stanu DESYNCH połączenia, oraz lekko zwiększonej ilości pakietów TCP ACK w segmencie, zwiększa się także współczynnik utraty pakietów. Aby uchronić się przed tym rodzajem ataku, należy zrezygnować z TELNET'a na rzecz np. SSH, lub też zaimplementować KERBEROSA.



Denial of Service (blokada usług świadczonych przez system). Przez wysyłanie niewłaściwie sformowanych pakietów, lub flood'owanie danego portu systemu, można spowodować jej zawieszenie, lub też zawieszenie całego systemu, wykorzystują błędy w implementacji obsługi gniazd (np. zbyt długie pakiety ICMP ) itp. Ratunkiem przed tego typu atakami są jedynie patche (czyli łatki) na oprogramowanie, oraz zaopatrzenie się w odpowiednie narzędzia logujące zdarzenia. W pewnych określonych sytuacjach sprawę rozwiązuje jednak dopiero zakup FIREWALL'a.



Wykorzystywanie tzw. exploit'ów. Exploity to małe programy głównie w C i PERL'u, które wykorzystują dziury w oprogramowaniu systemowym (np. SUID), polegające głównie na przepełnianiu buforów i skokach podprogramów w losowe miejsce w pamięci normalnie zabronione dla użytkownika (GCC trampolines) , dzięki czemu można uzyskać prawa administratora systemu. Ta forma ataku może się powieść, jednak intruz musi najpierw zdobyć konto na danej maszynie. Obroną przed tego typu atakiem, jest śledzenie na bieżąco list dyskusyjnych poświeconych dziurom w oprogramowaniu sieciowym (BUGTRAQ, linux-security), regularnym sprawdzaniem logów.


środa, 8 października 2014

Podstawowe protokoły sieciowe

  Protokół jest to zbiór procedur oraz reguł rządzących komunikacją, między co najmniej dwoma urządzeniami sieciowymi. Istnieją różne protokoły, lecz nawiązujące w danym momencie połączenie urządzenia muszą używać tego samego protokołu, aby wymiana danych pomiędzy nimi była możliwa.

Do najważniejszych protokołów należą:

  • TCP/IP
  • IP
  • SLIP
  • PPP
TCP/IP (ang. Transmission Control Protocol / Internet Protocol) - to zespół protokołów sieciowych używany w sieci Internet. Najczęściej wykorzystują go systemy Unixowe oraz systemy Windows, choć można stosować go również w systemach Novell NetWare. Zadanie protokołu TCP/IP polega na dzieleniu danych na pakiety odpowiedniej wielkości, ponumerowaniu ich w taki sposób, aby odbiorca mógł sprawdzić, czy dotarły wszystkie pakiety oraz ustawieniu ich we właściwej kolejności. Kolejne partie informacji wkładane są do kopert TCP, a te z kolei umieszczane są w kopertach IP. Oprogramowanie TCP po stronie odbiorcy zbiera wszystkie nadesłane koperty, odczytując przesłane dane. Jeśli brakuje którejś koperty, wysyła żądanie ponownego jej dostarczenia. Pakiety wysyłane są przez komputery bez uprzedniego sprawdzenia, czy możliwa jest ich transmisja. Może się zdarzyć taka sytuacja, że do danego węzła sieci, gdzie znajduje się router, napływa więcej pakietów, aniżeli urządzenie może przyjąć, posegregować i przesłać dalej. Każdy router posiada bufor, który gromadzi pakiety czekające na wysłanie. Gdy bufor ulegnie całkowitemu zapełnieniu, nowo nadchodzące pakiety zostaną odrzucone i bezpowrotnie przepadną. Protokół, który obsługuje kompletowanie pakietów zażąda więc wtedy ponownego ich wysłania.

IP (Internet Protocol) - to protokół do komunikacji sieciowej, gdzie komputer klienta wysyła żądanie, podczas gdy komputer serwera je wypełnia. Protokół ten wykorzystuje adresy sieciowe komputerów zwane adresami IP. Są to 32-bitowa liczby zapisywana jako sekwencje czterech ośmiobitowych liczb dziesiętnych (mogących przybierać wartość od 0 do 255), oddzielonych od siebie kropkami. Adres IP dzieli się na dwie części: identyfikator sieciowy (network id) i identyfikator komputera (host id). Istnieje kilka klasy adresowych, o różnych długościach obydwu składników. Obowiązujący obecnie sposób adresowania ogranicza liczbę dostępnych adresów, co przy bardzo szybkim rozwoju Internetu jest dla niego istotnym zagrożeniem. W celu ułatwienia zapamiętania adresów wprowadzono nazwy symboliczne, które tłumaczone są na adresy liczbowe przez specjalne komputery w sieci, zwane serwerami DNS
.
SLIP (ang. Serial Line Interface Protocol) - to protokół transmisji przez łącze szeregowe. Uzupełnia on działanie protokołów TCP/IP tak, by możliwe było przesyłanie danych przez łącza szeregowe.

PPP (ang. Point to Point Protocol) - to protokół transferu, który służy do tworzenia połączeń z siecią Internet przy użyciu sieci telefonicznej i modemu, umożliwiający przesyłanie danych posiadających różne formaty dzięki pakowaniu ich do postaci PPP. Steruje on połączeniem pomiędzy komputerem użytkownika a serwerem dostawcy internetowego. PPP działa również przez łącze szeregowe. Protokół PPP określa parametry konfiguracyjne dla wielu warstw z modelu OSI (ang. Open Systems Interconnection). PPP stanowiąc standard internetowy dla komunikacji szeregowej, określa metody, za pośrednictwem, których pakiety danych wymieniane są pomiędzy innymi systemami, które używają połączeń modemowych.


Do innych popularnych protokołów sieciowych należą:
  • IPX/SPX
  • NetBEUI
  • FTP
  • NetDDE
  • SNMP
  • SMTP
  • CSMA/CD
  • DNS
  • DHCP
  • AARP
  • Gopher
  • ARP
  • HTTP
  • ICMP

MODEL OSI; TCP/IP


Adres IP (ang. IP address) – w protokole IP liczba nadawana interfejsowi sieciowemu, grupie interfejsów (broadcast, multicast), bądź całej sieci komputerowej, służąca identyfikacji elementów sieci w warstwie trzeciej modelu OSI – w obrębie sieci lokalnej oraz poza nią (tzw. adres publiczny).
Adres IP nie jest "numerem rejestracyjnym" komputera – nie identyfikuje jednoznacznie fizycznego urządzenia – może się dowolnie często zmieniać (np. przy każdym wejściu do sieci Internet) jak również kilka urządzeń może dzielić jeden publiczny adres IP. Ustalenie prawdziwego adresu IP użytkownika, do którego następowała transmisja w danym czasie jest możliwe dla systemu/sieci odpornej na przypadki tzw. IP spoofingu (por. man in the middle, zapora sieciowa, ettercap) – na podstawie historycznych zapisów systemowych.
W najpopularniejszej wersji czwartej (IPv4) jest zapisywany zwykle w podziale na oktety zapisywane w systemie dziesiętnym i oddzielane kropkami, rzadziej szesnastkowym bądź dwójkowym (oddzielane dwukropkami bądź spacjami).

OSI (ang. Open Systems Interconnection) lub Model OSI (pełna nazwa ISO OSI RM, ang. ISO OSI Reference Model – model odniesienia łączenia systemów otwartych) – standard zdefiniowany przez ISO oraz ITU-T opisujący strukturę komunikacji sieciowej.
Międzynarodowa Organizacja Normalizacyjna (ang. International Organization for Standardization) na początku lat osiemdziesiątych dostrzegła potrzebę stworzenia modelu sieciowego, dzięki któremu producenci mogliby opracowywać współpracujące ze sobą rozwiązania sieciowe. W taki sposób powstała specyfikacja Open Systems Interconnection Reference Model, która do polskich norm została zaadaptowana w 1995 roku.

Model ISO OSI RM jest traktowany jako model odniesienia (wzorzec) dla większości rodzin protokołów komunikacyjnych. Podstawowym założeniem modelu jest podział systemów sieciowych na 7 warstw (ang. layers) współpracujących ze sobą w ściśle określony sposób. Został przyjęty przez ISO w 1984 roku a najbardziej interesującym organem jest wspólny komitet powołany przez ISO/IEC, zwany Joint Technical Committee 1- Information Technology (JTC1). Formalnie dzieli się jeszcze na podkomitety SC.
Dla Internetu sformułowano uproszczony Model TCP/IP, który ma tylko 4 warstwy.


Model TCP/IP (ang. Transmission Control Protocol/Internet Protocol) – teoretyczny model warstwowej struktury protokołów komunikacyjnych. Model TCP/IP został stworzony w latach 70. XX wieku w DARPA, aby pomóc w tworzeniu odpornych na atak sieci komputerowych. Potem stał się podstawą struktury Internetu.