środa, 8 kwietnia 2015

T: 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


-książka telefoniczna,
-katalog biblioteczny,
-dziennik lekcyjny,
-system ewidencji ludności PESEL,
-zestawienie towarów w magazynie hurtowni,
-kartoteka chorych w przychodni lekarskiej,
-rozkład jazdy


 
 
 

środa, 25 marca 2015

T : Grafika komputerowa

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)

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



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-ilość pixeli na daną matrycę (ilość pixeli na cal)


-grafika: 
-2D - grafika dwuwymiarowa. Termin ten odnosi się 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 grafiki oraz obiektów 2D. Obrazy grafiki 2D są całkowicie płaskie tzn. pozbawione jakichkolwiek warstw, analogicznie do rysunków jakie tworzymy w programie graficznym Paint systemu Windows.

-2,5D - grafika dwuwymiarowa z użyciem warstw. Daje poczucie trójwymiarowości lecz są to obiekty płaskie. Przy tworzeniu gier w tej technice za pomocą warstw stosowane jest powszechne pojęcie duszków. Sprite- dwuwymiarowy obrazek używany w systemach grafiki 2D i 2,5D, który po przesunięciu i ewentualnie przeskalowaniu jest przenoszony na ekran.

-3D - w niej obiekty umieszczane są w przestrzeni trójwymiarowej .
 


Pod względem cyklu i sposobu generacji obrazu grafikę dzielimy na:

-nieinterakcyjną- program wczytuje uprzednio przygotowane dane i na ich podstawie tworzy wynikowy obraz. Tak działa program, który wczytuje z pliku definicję sceny trójwymiarowej i na jej podstawie generuje obraz sceny.
-interakcyjną - program na bieżąco uaktualnia obraz w zależności od działań użytkownika, od razu wydać skutki. Czas odświeżenia obrazu nie może być zbyt długi. Stosuje się uproszczone metody rysowania obiektów.
-czasu rzeczywistego - program musi bardzo szybko generować obraz, aby wszystkie zmiany były natychmiast uwidocznione. Ma duże znaczenie w symulatorach i grach komputerowych.


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.


Grafika rastrowa (bitmapowa)

-do zapamiętania obrazu rastrowego potrzebna jest dwuwymiarowa tablica pikseli nazywana powszechnie biomapą. Nazwa wzięła się stąd, że początkowo rozpowszechnione były systemy wyświetlające obrazy czarno-białe , w więc w takim przypadku pojedynczy pixel mógł być opisany przez jeden bit. Jednak gdy powszechniejsza stała się grafika kolorowa, pixele zaczęły być opisywane więcej niż jednym bitem.

Pixel- najmniejszy, niepodzielny element obrazu o stałej barwie. Najmniejszy punkt ekranu lub obrazu. Słowo powstałe jako zlepek angielskich picture i element.

Rozdzielczość- rozmiar obrazka podany ilością pixeli w jego szerokości i wysokości. 

DPI, PPI, LPI
-ilość pixeli na jednostkę długości (cal)
-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.

Wyróżniamy barwy:
-chromatyczne -kolorowe
-achromatyczne -biel, czerń, odcienie szarości

Barwy dopełniające- pary barw, które połączone ze sobą w równych prop[orcjach dają -czerń, biel lub szarość.

Modele RGB

Modele CMY- substraktywna synteza koloru

Model HSB



środa, 15 października 2014

Lekcja 8 klasa 3

T: HYPER TEXT MARKUP 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.

poniedziałek, 13 października 2014

Lekcja 7 klasa 3

T: Bezpieczeństwo sieci.

Haker - osoba o bardzo dużych, praktycznych umiejętnościach informatycznych (lub elektronicznych), która identyfikuje się ze społecznością hakerską. Hakerzy odznaczają się bardzo dobrą orientacją w Internecie, znajomością wielu języków programowania, a także świetną znajomością systemów operacyjnych, w tym zwłaszcza z rodziny Unix (GNU/LinuxBSD itp.) Haker ewentualnie wykorzystuje dziury bezpieczeństwa w oprogramowaniu komputerowym. Może też dzięki nim uzyskiwać dostęp do zabezpieczonych zasobów. W 2011 roku hakerzy poznali 174 mln rekordów w 855 atakach.
Osoby łamiące zabezpieczenia nazywa się też crackerami. Hakerzy skupieni w społeczności hakerskiej używają terminu cracker dla odróżnienia od siebie przestępców, z kolei crackerzy terminu haker używają na określenie włamywaczy sieciowych.

Ze względu na stosowaną etykę wyróżnia się następujący podział hakerów zabezpieczeń:
  • black hat (czarne kapelusze) – są to hakerzy działający na granicy lub poza granicami prawa. Znalezionych błędów albo nie publikują w ogóle, wykorzystując je w nielegalny sposób, albo publikują od razu w postaci gotowych programów (tzw. exploitów), które mogą zostać użyte przez osoby o niższych umiejętnościach (np. script kiddies). Niektóre osoby kwestionują w tym przypadku użycie słowa "haker", zastępując je wyrazem "cracker".
  • white hat (białe kapelusze) – hakerzy działający zupełnie legalnie lub też starający się nie wyrządzać szkód. Odkryte przez siebie dziury w bezpieczeństwie zwykle podają w formie, w której mogą zostać łatwo załatane przez autorów oprogramowania, lecz trudne do wykorzystania w celu zaszkodzenia komuś (zobacz: full disclosure). Wśród nich często się spotyka audytorów bezpieczeństwa.
  • grey hat (szare kapelusze) – hakerzy/crackerzy, którzy przyjmują po części metody działania obu wyżej wymienionych grup.
Kapelusze pochodzą ze starych czarno-białych westernów, gdzie na podstawie koloru kapelusza odróżniano tych dobrych od tych złych. Klasyfikacja powyższa nie przyjęła się szeroko i często wywołuje kontrowersje w środowisku informatycznym.

Złośliwe oprogramowaniemalware (z ang. malicious software) – wszelkie aplikacjeskrypty itp. mające szkodliwe, przestępcze lub złośliwe działanie w stosunku do użytkownika komputera.

Do złośliwego oprogramowania należą:
  • Wirus – program lub fragment wrogiego wykonalnego kodu, który dołącza się, nadpisuje lub zamienia inny program w celu reprodukcji samego siebie bez zgody użytkownika. Ze względu na różne rodzaje infekcji wirusy dzielą się na:
    • wirusy gnieżdżące się w sektorze rozruchowym twardego dysku (ang. boot sector viruses),
    • wirusy pasożytnicze (ang. parasitic viruses),
    • wirusy wieloczęściowe (ang. multi-partite viruses),
    • wirusy towarzyszące (ang. companion viruses),
    • makrowirusy (ang. macro viruses).

  • Robaki (ang. worm) – złośliwe oprogramowanie podobne do wirusów, rozmnażające się tylko przez sieć. W przeciwieństwie do wirusów nie potrzebują programu „żywiciela”. Często powielają się pocztą elektroniczną.

  • Wabbit – program rezydentny nie powielający się przez sieć. Wynikiem jego działania jest jedna określona operacja, np. powielanie tego samego pliku aż do wyczerpania zasobów pamięci komputera.
  • Trojan – nie rozmnaża się jak wirus, ale jego działanie jest równie szkodliwe. Ukrywa się pod nazwą lub w części pliku, który użytkownikowi wydaje się pomocny. Oprócz właściwego działania pliku zgodnego z jego nazwą, trojan wykonuje operacje w tle szkodliwe dla użytkownika, np. otwiera port komputera, przez który może być dokonany atak włamywacza (hakera).

  • Backdoor – przejmuje kontrolę nad zainfekowanym komputerem, umożliwiając wykonanie na nim czynności administracyjnych, łącznie z usuwaniem i zapisem danych. Podobnie jak trojan, backdoor podszywa się pod pliki i programy, z których często korzysta użytkownik. Umożliwia intruzom administrowanie systemem operacyjnym poprzez Internet. Wykonuje wtedy zadania wbrew wiedzy i woli ofiary.
  • Programy szpiegujące (ang. spyware) – oprogramowanie zbierające informacje o osobie fizycznej lub prawnej bez jej zgody, jak informacje o odwiedzanych witrynach, hasła dostępowe itp. Występuje często jako dodatkowy i ukryty komponent większego programu, odporny na usuwanie i ingerencję użytkownika. Programy szpiegujące mogą wykonywać działania bez wiedzy użytkownika – zmieniać wpisy do rejestru systemu operacyjnego i ustawienia użytkownika. Program szpiegujący może pobierać i uruchamiać pliki pobrane z sieci.
    • scumware (ang. scum – piana; szumowiny, męty) – żargonowe, zbiorcze określenie oprogramowania, które wykonuje w komputerze niepożądane przez użytkownika czynności.
    • stealware/parasiteware – służące do okradania kont internetowych,
    • adware – oprogramowanie wyświetlające reklamy,
    • Hijacker Browser Helper Object – dodatki do przeglądarek, wykonujące operacje bez wiedzy użytkownika.
  • Exploit – kod umożliwiający bezpośrednie włamanie do komputera ofiary, do dokonania zmian lub przejęcia kontroli wykorzystuje się lukę w oprogramowaniu zainstalowanym na atakowanym komputerze. Exploity mogą być użyte w atakowaniu stron internetowych, których silniki oparte są na językach skryptowych (zmiana treści lub przejęcie kontroli administracyjnej), systemy operacyjne (serwery i końcówki klienckie) lub aplikacje (pakiety biurowe, przeglądarki internetowe lub inne oprogramowanie).
  • Rootkit – jedno z najniebezpieczniejszych narzędzi hackerskich. Ogólna zasada działania opiera się na maskowaniu obecności pewnych uruchomionych programów lub procesów systemowych (z reguły służących hackerowi do administrowania zaatakowanym systemem). Rootkit zostaje wkompilowany (w wypadku zainfekowanej instalacji) lub wstrzyknięty w istotne procedury systemowe, z reguły jest trudny do wykrycia z racji tego, że nie występuje jako osobna aplikacja. Zainstalowanie rootkita jest najczęściej ostatnim krokiem po włamaniu do systemu, w którym prowadzona będzie ukryta kradzież danych lub infiltracja.
  • Keylogger – Odczytuje i zapisuje wszystkie naciśnięcia klawiszy użytkownika. Dzięki temu adresy, kody, cenne informacje mogą dostać się w niepowołane ręce. Pierwsze programowe keyloggery były widoczne w środowisku operacyjnym użytkownika. Teraz coraz częściej są procesami niewidocznymi dla administratora. Istnieją też keyloggery występujące w postaci sprzętowej zamiast programowej.
  • Dialery – programy łączące się z siecią przez inny numer dostępowy niż wybrany przez użytkownika, najczęściej są to numery o początku 0-700 lub numery zagraniczne. Dialery szkodzą tylko posiadaczom modemów telefonicznych analogowych i cyfrowych ISDN, występują głównie na stronach o tematyce erotycznej.
Mniej szkodliwe złośliwe oprogramowanie to:
  • fałszywe alarmy dotyczące rzekomo nowych i groźnych wirusów (ang. false positives); fałszywy alarm to także rzekome wykrycie zainfekowanego pliku, które powodują programy antywirusowe z najwyższym poziomem analizy heurystycznej.
  • żarty komputerowe, robione najczęściej nieświadomym początkującym użytkownikom komputerów.


Obrona przed szkodliwym oprogramowaniem:
  • instalacja oprogramowania antywirusowego,
  • włączona zapora sieciowa (firewall) z modułem HIPS, która zapobiega włączeniu zagrożeń typu zero day,
  • aktualizacja wszelkiego oprogramowania,
  • nieotwieranie załączników poczty elektronicznej niewiadomego pochodzenia,
  • czytanie okien instalacyjnych aplikacji, a także ich licencji,
  • wyłączenie makr w plikach MS Office nieznanego pochodzenia,
  • regularne całościowe skany systemu programem antywirusowym i antymalware,
  • przy płatnościach drogą elektroniczną upewnienie się, że transmisja danych będzie szyfrowana (banking mode),
  • instalacja programów prewencyjnych (wykrywania i zapobiegania włamaniom), opartych na polityce piaskownicy z HIPS (np. GesWall),
  • używanie oryginalnego systemu i aplikacji, pochodzących z legalnego źródła
Istnieje wiele programów służących do zwalczania poszczególnych tego typu problemów. Występują również pakiety zapewniające całościową ochronę. Po angielsku określane są one jako programy typu internet security. Łączą one funkcje programu antywirusowego, firewalla, programu blokującego spam, blokad stron o niepożądanej treści oraz systemu prewencyjnego HIPS.

Programiści Firefox, Chrome, Safari, Opera oraz Internet Explorera wprowadzili zabezpieczenie, które bezpośrednio na poziomie samej przeglądarki sprawdza, czy dana witryna nie została przypadkiem zgłoszona jako potencjalne zagrożenie. W przypadku zagrożenia dostęp do strony jest blokowany i wyświetlany jest stosowny komunikat.
W momencie zgłoszenia do listy stron stanowiących zagrożenie, dodatkowo wysyłany jest list e-mail informujący o tym fakcie do administratora, webmastera strony.
Do zapewnienia jak najlepszej ochrony komputera podczas korzystania z przeglądarek służą liczne wtyczki, np. WOT dla Firefoksa, Google Chrome, Opery, Internet Explorera i Safari.
Programy antywirusowe
Program antywirusowy (antywirus) – program komputerowy, którego celem jest wykrywanie, zwalczanie i usuwanie wirusów komputerowych. Współcześnie najczęściej jest to pakiet programów chroniących komputer przed różnego typu zagrożeniami.
Programy antywirusowe często są wyposażone w dwa niezależnie pracujące moduły (uwaga: różni producenci stosują różne nazewnictwo):
  • skaner – bada pliki na żądanie lub co jakiś czas; służy do przeszukiwania zawartości dysku
  • monitor – bada pliki ciągle w sposób automatyczny; służy do kontroli bieżących operacji komputera
Program antywirusowy powinien również mieć możliwość aktualizacji definicji nowo odkrytych wirusów, najlepiej na bieżąco, przez pobranie ich z Internetu, ponieważ dla niektórych systemów operacyjnych codziennie pojawia się około trzydziestu nowych wirusów.
Widoczna jest tendencja do integracji narzędzi do ochrony komputera. Kiedyś był to jedynie skaner, który wyszukiwał wirusy, początkowo na podstawie sygnatur znanych wirusów, a potem także typujący pliki jako zawierające podejrzany kod za pomocą metod heurystycznych.
Trzeba dodać, że współcześnie programy antywirusowe jako jedyna linia obrony nie wystarczają, Obecnie poza skanerem, monitorem i modułem do aktualizacji sygnatur z sieci, pakiet antywirusowy zawiera często także zaporę sieciową, moduły kontroli przesyłek poczty elektronicznej i plików pobieranych z sieci, moduł wykrywania i zapobiegania włamaniom, skaner pamięci i strażnika MBR. Wszystkie te moduły posiadają programy typu internet security - np. AVG InternetSecurity, G Data InternetSecurity, Kaspersky InternetSecurity - jednak można je zainstalować oddzielnie, co według licznych testów laboratoriów antywirusowych, oferują znacznie wyższy poziom ochrony przed malware niż pakiety bezpieczeństwa. Pierwszy komercyjny program antywirusowym pojawił się w 1989. Był nim AntiVirenKit niemieckiej firmy G Data Software AG.

Moduły programów antywirusowych:

  • Skanery

Skanery to najstarszy i najprostszy sposób ochrony antywirusowej. Ich działanie polega na wyszukiwaniu określonej sekwencji bajtów w ciągu danych. W większości wirusów można wyróżnić unikalną sekwencję bajtów, tzw. sygnaturę, dzięki której możliwe jest odnalezienie wirusa w pamięci lub w zarażonej ofierze. Skuteczność skanera antywirusowego zależy od tego, jak bardzo charakterystyczna jest dana sekwencja. Najlepiej, jeżeli wirus zawiera w sobie jakiś bardzo specyficzny napis lub ciąg bajtów.
Wraz z pojawieniem się wirusów polimorficznych znaczenie skanerów trochę zmalało, jednak nadal jest to najważniejsza metoda walki z wirusami. Wirusy polimorficzne są trudne do wykrycia, gdyż ich różne próbki nie wyglądają tak samo. Często dwie próbki danego wirusa nie mają ze sobą nic wspólnego. Polimorfizm może być osiągnięty poprzez zakodowanie ciała wirusa. W przypadku tych wirusów również używa się skanera, choć dopiero w późniejszej fazie wykrywania.

  • Monitory

Monitor to program antywirusowy zainstalowany jako TSR (ang. Terminate and Stay Resident) lub sterownik SYS, który – poprzez monitorowanie odpowiednich funkcji DOS iBIOS – pozwala na wykrywanie wszystkich wykonywanych za pomocą tych funkcji odwołań do dysków. To, czy monitor będzie działał prawidłowo zależy często od momentu, w którym przejął on kontrolę nad systemem (przed działaniem wirusa, czy już po) oraz od tego, jak głęboko wnika on w system operacyjny. Jak widać autorzy programów antywirusowych muszą korzystać z metod podobnych do tych, które stosują twórcy wirusów. Dużą wadą programów monitorujących jest to, że powodują one często fałszywe alarmy. Niekiedy zdarza się tak, że użytkownik po kolejnym potwierdzeniu jakiejś zwykłej operacji dyskowej staje się mniej uważny i nawet usuwa program antywirusowy z pamięci.

  • Szczepionki

Są to programy skierowane przeciwko konkretnym wirusom. Na podstawie posiadanego czy wykrytego egzemplarza wirusa można, po odpowiedniej analizie jego kodu, zdefiniować tzw. sygnatury, na podstawie których wykrywa się kolejne kopie wirusa w systemie. Dokładna analiza kodu wirusa pozwala niekiedy odnaleźć w nim oryginalne wartości pewnych parametrów, które mogą posłużyć do wyleczenia plików. Większość z istniejących szczepionek to rozbudowane programy, które potrafią wykryć i usunąć kilka tysięcy określonych wirusów. Tylko w przypadkach nowych wirusów szczepionki nie są efektywne.

  • Programy autoweryfikujące

Programy te służą do sprawdzania czy dany program nie został w jakiś sposób zmieniony przez wirusa. Sprawdzanie to jest możliwe poprzez dodanie do wskazanego pliku określonego, krótkiego programu. Dodawany kod dopisuje się do pliku wykorzystując te same mechanizmy co wirusy i pozwala on na autoweryfikację, czyli automatyczne sprawdzanie czy dany program nie został zmodyfikowany.
Niestety, programy tego typu najczęściej nie są odporne na technikę ukrywania kodu wirusa stealth i w systemie zainfekowanym przez wirusa używającego tej techniki okażą się
Działanie tego typu programów polega na obliczaniu odpowiednich sum kontrolnych dla żądanego pliku lub plików. Zliczane sumy kontrolne są przechowywane w osobnych plikach, tworzonych po pierwszym uruchomieniu programu. Jeżeli pliki te istniały już wcześniej, program antywirusowy wykorzystuje dane w nich zawarte aby porównać bieżąco wyliczoną sumę, z sumą poprzednio zachowaną w pliku.
Istnieje szereg algorytmów do tworzenia sum kontrolnych dla plików. Ogromną wadą programów tego typu jest to, że pliki przechowujące obliczone sumy kontrolne nie są wcale chronione. Dzięki znajomości wielu algorytmów stosowanych przez programy antywirusowe, niektóre wirusy potrafią zarazić określony plik i obliczyć dla niego nową sumę kontrolną.
  • AVG 

  • Avast




Ogólne wskazówki dotyczące bezpieczeństwa hasła

  • hasło powinno zawierać minimum 8 znaków (im dłuższe tym lepsze),
  • hasło powinno zawierać znaki wybrane z jak największego zbioru (cyfry, małe litery, duże litery, znaki specjalne itd.),
  • hasło nie powinno opierać się bezpośrednio na realnym słowie lub popularnej kombinacji znaków (np. qwerty),
  • hasło nie powinno opierać się bezpośrednio na danych znanych innym osobom (daty urodzenia, imiona, nr rejestracyjny samochodu itd)
  • nie należy zapisywać hasła w formie jawnej (niezaszyfrowanej),
  • nie należy przesyłać hasła przez internet (np. za pomocą poczty email) w formie jawnej (niezaszyfrowanej),
  • hasło powinno być zmieniane co jakiś czas,
  • nie należy używać tego samego hasła do wielu różnych usług / operacji.
  • nie należy podawać hasła podczas korzystania z niezaufanego komputera.
  • przed wprowadzeniem hasła należy sprawdzić adres oraz zabezpieczenia strony (dotyczy zwłaszcza bankowości internetowej).