Teoria do egzaminu INF.03
Kurs przygotowuje do części pisemnej kwalifikacji INF.03 „Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych”. Przechodzi przez wszystkie działy, z których CKE układa pytania, i w każdym daje do rozwiązania prawdziwe pytania egzaminacyjne z objaśnieniami.
Jak wygląda część pisemna
Wynik części pisemnej to tylko połowa egzaminu. Część praktyczna (strona z HTML, CSS, JavaScriptem, PHP i bazą danych) ma osobny próg 75%. Teoria jednak bardzo pomaga w praktyce: te same znaczniki, właściwości CSS i polecenia SQL pojawiają się w obu częściach.
Z czego są pytania
Na podstawie ponad 2600 pytań z bazy egzaminacyjnej INF.03 widać, które działy pojawiają się najczęściej. Kolejność lekcji odpowiada mniej więcej ich wadze:
| Dział | Lekcje | Udział w pytaniach |
|---|---|---|
| HTML i CSS | 1–6 | około 1/3 |
| Bazy danych i SQL | 12–14 | około 1/4 |
| PHP (także z MySQL) | 10–11 | około 1/7 |
| JavaScript | 9 | około 1/8 |
| Grafika i multimedia | 7–8 | około 1/10 |
| Serwery, CMS, bezpieczeństwo, prawo | 15–16 | około 1/10 |
| Algorytmy i podstawy informatyki | 17 | około 1/10 |
Jak korzystać z kursu
- Przeczytaj lekcję. Ramki „Na egzaminie” pokazują pułapki, na które CKE łapie najczęściej.
- Odpowiedz na pytania „Sprawdź się”. Są krótkie i dotyczą tylko tej lekcji.
- Rozwiąż blok „Pytania z egzaminów CKE” na końcu lekcji. Po złej odpowiedzi zobaczysz objaśnienie, dlaczego poprawna jest inna. Możesz próbować do skutku: pytanie zalicza się, gdy trafisz.
- Postęp widać w górnym pasku i przy każdej lekcji w spisie. Zapisuje się tylko w tej przeglądarce.
- Na końcu rozwiąż egzamin próbny w pełnej bazie pytań INF.03: 40 losowych pytań, 60 minut.
Wskazówka. Na egzaminie najpierw odpowiedz na pytania, które znasz od razu. Do trudnych wróć na końcu. Nie zostawiaj pustych odpowiedzi, bo za błędną nie ma punktów ujemnych.
Struktura dokumentu i podstawowe znaczniki
HTML opisuje treść strony: co jest nagłówkiem, co akapitem, co listą. Wygląd to zadanie CSS. Na egzaminie liczy się znajomość szkieletu dokumentu, roli poszczególnych znaczników i zasad poprawnego zapisu.
Szkielet dokumentu HTML5
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Opis strony dla wyszukiwarek">
<title>Tytuł na karcie przeglądarki</title>
<link rel="stylesheet" href="styl.css">
</head>
<body>
<h1>Widoczna treść strony</h1>
</body>
</html><!DOCTYPE html>mówi przeglądarce, że dokument jest w HTML5. To nie jest znacznik, tylko deklaracja typu dokumentu.<head>zawiera informacje o stronie, których nie widać w treści: kodowanie, tytuł, opis, podpięte style i skrypty.<title>wyświetla się na pasku tytułu (karcie) przeglądarki i w wynikach wyszukiwania.<meta charset="UTF-8">ustawia kodowanie znaków, dzięki czemu polskie litery wyświetlają się poprawnie.<meta name="viewport">sprawia, że strona dopasowuje się do szerokości ekranu telefonu.<meta name="description">to opis zawartości strony dla wyszukiwarek, akeywordsto słowa kluczowe.
Na egzaminie. Pytanie „którego znacznika nie umieszcza się w <head>” ma zwykle jako odpowiedź znacznik treści, np. <h2>, <p> albo <img>. W sekcji head są tylko title, meta, link, style, script i base.
Znaczniki tekstu
| Znacznik | Znaczenie | Wygląd domyślny |
|---|---|---|
<h1> … <h6> | nagłówki od najważniejszego do najmniej ważnego | pogrubione, h1 największy |
<p> | akapit | odstępy nad i pod |
<br> | złamanie linii (bez zamknięcia) | nowa linia |
<hr> | pozioma linia, zmiana tematu | kreska |
<strong> / <b> | ważny tekst / tylko pogrubienie | pogrubienie |
<em> / <i> | akcent / tylko kursywa | kursywa |
<u>, <s>, <mark> | podkreślenie, przekreślenie, zaznaczenie | podkreślony, przekreślony, żółte tło |
<sub>, <sup> | indeks dolny (H2O), górny (m2) | mniejszy, przesunięty |
<blockquote>, <q> | cytat blokowy, cytat w tekście | wcięcie, cudzysłów |
<pre>, <code> | tekst sformatowany (zachowuje spacje), kod | czcionka o stałej szerokości |
Na egzaminie. <strong> wygląda jak <b>, a <em> jak <i>. Różnica jest znaczeniowa: strong i em mówią, że tekst jest ważny, co odczytują czytniki ekranu i wyszukiwarki. Pogrubienie w CSS to font-weight: bold, kursywa to font-style: italic.
Elementy blokowe i liniowe
Elementy blokowe (div, p, h1–h6, ul, table, form, section) zaczynają się od nowej linii i zajmują całą szerokość. Elementy liniowe (span, a, img, strong, em, input) układają się w tekście jeden za drugim. <div> i <span> nic nie znaczą: to pojemniki, do których dopina się styl przez id albo class.
id musi być unikalny, czyli występować w dokumencie tylko raz. class można nadać wielu elementom, a jeden element może mieć kilka klas: class="ramka czerwona".
Znaczniki semantyczne HTML5
Wyglądają jak zwykły div, ale mówią, czym jest dana część strony. Pomaga to wyszukiwarkom i osobom korzystającym z czytników ekranu.
Encje, czyli znaki specjalne
Znaki, które HTML traktuje jako składnię, trzeba zapisać encją: < to <, > to >, & to &, " to cudzysłów, to twarda spacja (nie łamie linii), © to ©.
Walidacja
Walidacja to sprawdzenie zgodności kodu ze standardem, zwykle walidatorem W3C (validator.w3.org). Typowe błędy, które pokazuje:
- niezamknięty znacznik albo zła kolejność zamykania:
<p><b>tekst</p></b>(znaczniki zamyka się w odwrotnej kolejności niż otwiera), - brak cudzysłowu zamykającego wartość atrybutu,
- brak atrybutu
altw<img>, - powtórzony
id, znacznik blokowy wewnątrz<p>, znacznik w złej sekcji.
Na egzaminie. Walidacja nie sprawdza wyglądu ani działania strony, tylko poprawność zapisu. Do CSS jest osobny walidator, który wyłapie np. brak średnika albo nieistniejącą właściwość.
Który zapis może wystąpić w poprawnym dokumencie HTML tylko jeden raz?
<div class="menu"><div><div id="menu"><div style="color:red">
Gdzie będzie widoczny tekst zapisany w <title>?
- jako największy nagłówek na stronie
- na karcie (pasku tytułu) przeglądarki
- w stopce strony
- nigdzie, to komentarz
Dlaczego zapis <p><b>tekst</p></b> nie przejdzie walidacji?
- znacznik
<b>nie istnieje w HTML5 <b>nie może być w akapicie- brakuje atrybutu
class - znaczniki są zamknięte w złej kolejności
Odnośniki, obrazy, listy i tabele
Te cztery elementy pojawiają się w każdej stronie z części praktycznej i w wielu pytaniach teoretycznych. Najczęściej trzeba rozpoznać, co wyświetli dany kod.
Odnośniki <a>
<a href="https://example.com">Strona zewnętrzna</a>
<a href="kontakt.html">Plik w tym samym folderze</a>
<a href="#cennik">Przewiń do elementu o id="cennik"</a>
<a href="mailto:szkola@example.com">Napisz e-mail</a>
<a href="cennik.pdf" target="_blank">Otwórz w nowej karcie</a>hrefto adres, do którego prowadzi odnośnik. Adres bezwzględny zawiera protokół i domenę, względny jest liczony od bieżącego pliku (../to folder wyżej).href="#id"przewija stronę do elementu o tym identyfikatorze (kotwica). Sam#przewija na górę strony.target="_blank"otwiera stronę w nowym oknie lub karcie, a_self(domyślnie) w tym samym.rel="nofollow"to informacja dla robotów wyszukiwarek, żeby nie podążały za linkiem.
Obrazy <img>
<img src="obrazy/pies.jpg" alt="Pies na łące" width="300" height="200">srcwskazuje plik graficzny.altto tekst alternatywny. Wyświetla się, gdy obraz się nie wczyta, i odczytują go czytniki ekranu dla osób niewidomych. Bez niego walidacja zgłasza błąd.titleto dymek po najechaniu myszą. To nie to samo coalt.<img>nie ma znacznika zamykającego.
Na egzaminie. „Co się stanie, gdy plik graficzny nie istnieje?” Przeglądarka pokaże w jego miejscu tekst z alt. „Który atrybut uzupełnić, by strona była dostępna dla niewidomych?” Również alt.
Listy
<ol> <!-- numerowana: 1. 2. 3. -->
<li>punkt 1</li>
<li>punkt 2
<ul> <!-- zagnieżdżona punktowana -->
<li>podpunkt</li>
</ul>
</li>
</ol>
<dl> <!-- lista definicji -->
<dt>HTML</dt> <dd>język znaczników</dd>
</dl><ol> to lista uporządkowana (numerowana), <ul> nieuporządkowana (punktowana), <li> to element każdej z nich. Lista zagnieżdżona musi być wewnątrz <li>. Atrybut type w ol zmienia numerację (A, a, I, i), a start ustawia numer pierwszego punktu.
Tabele
<table border="1">
<tr><th>Imię</th><th>Wynik</th></tr>
<tr><td>Ala</td><td rowspan="2">zdane</td></tr>
<tr><td>Ola</td></tr>
<tr><td colspan="2">Komórka na dwie kolumny</td></tr>
</table><tr>to wiersz,<td>komórka,<th>komórka nagłówkowa (domyślnie pogrubiona i wyśrodkowana).colspanłączy komórki w poziomie (zajmuje kilka kolumn),rowspanw pionie (kilka wierszy).- Liczba kolumn to liczba komórek w wierszu, licząc colspan. Liczba wierszy to liczba
<tr>. <caption>to podpis tabeli, a<thead>,<tbody>i<tfoot>grupują wiersze.
Na egzaminie. Przy rysunku tabeli policz najpierw kolumny w najszerszym wierszu. Komórka z rowspan="2" „zabiera” miejsce w następnym wierszu, więc ten wiersz ma o jedną <td> mniej.
Jaki atrybut dodać do <a>, aby strona otworzyła się w nowej karcie?
target="_blank"target="_self"rel="new"href="new"
Atrybut colspan="3" w komórce tabeli sprawi, że komórka
- zajmie trzy wiersze
- będzie miała obramowanie 3 px
- zajmie trzy kolumny
- będzie trzecią kolumną
Formularze
Formularz zbiera dane od użytkownika i wysyła je do skryptu na serwerze, najczęściej w PHP. Na egzaminie trzeba znać typy pól, rolę atrybutów i różnicę między GET a POST.
Budowa formularza
<form action="zapisz.php" method="post">
<label for="imie">Imię:</label>
<input type="text" id="imie" name="imie" placeholder="np. Jan" required>
<input type="password" name="haslo" maxlength="20">
<input type="number" name="wiek" min="1" max="120">
<input type="radio" name="plec" value="k"> K
<input type="radio" name="plec" value="m"> M
<input type="checkbox" name="zgoda" checked> Zgoda
<select name="miasto">
<option value="plock" selected>Płock</option>
<option value="torun">Toruń</option>
</select>
<textarea name="uwagi" rows="4" cols="40"></textarea>
<input type="submit" value="Wyślij"> <input type="reset" value="Wyczyść">
</form>Atrybuty, o które pyta CKE
| Atrybut | Do czego służy |
|---|---|
action | adres skryptu, który odbierze dane (np. zapisz.php) |
method | sposób wysłania: get albo post |
name | nazwa pola. Pod tą nazwą dane trafią do serwera, np. $_POST['imie'] |
value | wartość domyślna pola albo napis na przycisku |
placeholder | szary podpowiadający tekst w pustym polu, znika po wpisaniu |
required | pole obowiązkowe: formularz się nie wyśle, gdy jest puste |
maxlength, size | największa liczba znaków / widoczna szerokość pola |
min, max, step | zakres i krok dla number, range, date |
pattern | wyrażenie regularne, które musi pasować do wpisanej wartości |
checked, selected | zaznaczenie domyślne pola wyboru / opcji listy |
disabled, readonly | pole nieaktywne (nie wysyła się) / tylko do odczytu |
Przyciski radio z tym samym name tworzą grupę, w której można zaznaczyć tylko jeden. checkbox pozwala zaznaczyć dowolnie wiele. Typ password ukrywa wpisywane znaki kropkami. HTML5 dodał też typy email, number, date, color, range, url, tel, które same sprawdzają format.
GET czy POST
formularz.php?imie=Jan&wiek=17. Widać je, można dodać do zakładek, długość adresu jest ograniczona. W PHP: $_GET.$_POST.Na egzaminie. Jeśli w pytaniu widać adres ze znakiem ? i parami nazwa=wartość, formularz użył metody GET. POST nie jest sam w sobie szyfrowany. Największe bezpieczeństwo daje POST przez HTTPS.
Walidacja danych
Walidacja to sprawdzenie, czy wpisane dane spełniają reguły: pole niepuste, poprawny e-mail, liczba w zakresie. Po stronie klienta robi to HTML5 (required, pattern, typy pól) albo JavaScript, zanim dane wyjdą z przeglądarki. Po stronie serwera robi to PHP. Serwer zawsze musi sprawdzić dane jeszcze raz, bo kontrolę w przeglądarce łatwo obejść.
Po wysłaniu formularza w pasku adresu widać wynik.php?imie=Ala&klasa=3. Jakiej metody użyto?
- POST
- GET
- PUT
- SEND
Który atrybut pola decyduje o tym, pod jaką nazwą PHP odczyta jego wartość?
idvaluetypename
Selektory, kaskada i sposoby dołączania stylów
CSS (kaskadowe arkusze stylów) oddziela wygląd strony od jej treści. Jedna reguła może zmienić wygląd wszystkich akapitów w całym serwisie. Najwięcej pytań z CSS dotyczy tego, który element zostanie sformatowany danym selektorem.
Budowa reguły
h1 { color: blue; font-size: 24px; }
/* selektor { właściwość: wartość; właściwość: wartość; } */h1 to selektor, color to właściwość, blue to wartość, a całość w nawiasach klamrowych to blok deklaracji. Komentarz w CSS zapisuje się tylko jako /* … */.
Trzy sposoby dołączenia stylów
| Sposób | Zapis | Zasięg |
|---|---|---|
| zewnętrzny arkusz | <link rel="stylesheet" href="styl.css"> w <head> | wiele stron naraz |
| wewnętrzny (osadzony) | <style> p { … } </style> w <head> | jedna strona |
| lokalny (liniowy) | <p style="color: red"> | jeden element |
Selektory
| Selektor | Co wybiera |
|---|---|
p | wszystkie akapity (selektor znacznika) |
.tekst | elementy z class="tekst" (kropka = klasa) |
#menu | element z id="menu" (krzyżyk = identyfikator) |
p.tekst | tylko akapity z klasą tekst |
h1, h2 | h1 oraz h2 (przecinek grupuje) |
div p | akapity gdziekolwiek wewnątrz div (potomkowie) |
div > p | akapity będące bezpośrednimi dziećmi div |
h1 + p | akapit stojący zaraz po h1 |
input[type=number] | elementy z atrybutem o danej wartości |
* | wszystkie elementy |
Pseudoklasy i pseudoelementy
| Zapis | Kiedy działa |
|---|---|
a:link / a:visited | link jeszcze nieodwiedzony / już odwiedzony |
:hover | gdy kursor myszy jest nad elementem |
:active | w chwili kliknięcia |
:focus | gdy pole jest aktywne (kliknięte, kursor w środku) |
:first-child, :last-child | pierwszy / ostatni element wśród rodzeństwa |
:nth-child(even), (odd), (3) | parzyste / nieparzyste / trzecie dziecko, np. wiersze tabeli |
::first-letter | pierwsza litera elementu |
::first-line | pierwsza linia tekstu elementu |
::before, ::after | wstawka przed / po treści (z właściwością content) |
Na egzaminie. h1::first-letter { color: red } koloruje tylko pierwszą literę każdego nagłówka h1. p::first-line dotyczy pierwszej linii każdego akapitu. Kolejność reguł dla linków zapamiętaj jako LoVe HAte: :link, :visited, :hover, :active.
Kaskada i dziedziczenie
Gdy kilka reguł ustawia tę samą właściwość tego samego elementu, wygrywa:
- reguła z
!important, - styl o wyższej specyficzności: lokalny
style="">#id>.klasai pseudoklasy > znacznik, - przy równej specyficzności reguła zapisana później.
Część właściwości jest dziedziczona przez elementy wewnątrz: color, font-*, text-align, line-height. Właściwości pudełka (margin, padding, border, width, background) nie są dziedziczone. Dlatego styl czcionki ustawiony dla body obowiązuje w całym dokumencie.
Który selektor sformatuje jednocześnie akapity z klasą tekst i element o identyfikatorze obrazki?
p#tekst .obrazkip.tekst, #obrazki.tekst #obrazki#tekst, p.obrazki
Co zrobi reguła tr:nth-child(even) { background: #eee; }?
- zabarwi tło parzystych wierszy tabeli
- zabarwi tło wszystkich wierszy
- zabarwi tło pierwszego wiersza
- zabarwi tło wiersza po najechaniu myszą
Akapit ma class="info" id="wazny". Reguły: p { color: black }, #wazny { color: red }, .info { color: green }. Jakiego koloru będzie tekst?
- czarnego
- zielonego
- czerwonego
- domyślnego
Tekst, kolory, jednostki i tło
To najliczniejsza grupa pytań z CSS. Trzeba rozpoznać, co robi właściwość, przeliczyć kolor między zapisami i wiedzieć, która jednostka jest względna.
Czcionka i tekst
| Właściwość | Przykład | Efekt |
|---|---|---|
font-family | Arial, sans-serif | krój czcionki, kolejne to zapasowe |
font-size | 16px, 1.2em | rozmiar |
font-weight | bold, 700 | pogrubienie |
font-style | italic | pochylenie (kursywa) |
font-variant | small-caps | kapitaliki |
color | navy | kolor tekstu |
text-align | center, justify | wyrównanie w poziomie |
text-decoration | underline, none, line-through | podkreślenie (none usuwa je z linków) |
text-transform | uppercase, capitalize | wielkie litery / wielka pierwsza litera słów |
text-indent | 20px | wcięcie pierwszej linii |
line-height | 1.5 | interlinia (wysokość wiersza) |
letter-spacing, word-spacing | 2px | odstęp między literami / słowami |
text-shadow | 2px 2px 3px gray | cień tekstu |
Na egzaminie. color zmienia kolor tekstu, a nie tła. Tło to background-color. Pytania często mieszają te dwie właściwości w odpowiedziach.
Zapis kolorów
Na ekranie kolor to mieszanina trzech składowych: czerwonej (R), zielonej (G) i niebieskiej (B), każda od 0 do 255. Ten sam kolor można zapisać na kilka sposobów:
| Zapis | Czerwony | Biały | Pomarańczowy |
|---|---|---|---|
| nazwa | red | white | orange |
| szesnastkowo | #FF0000 lub #F00 | #FFFFFF | #FF8010 |
| rgb() | rgb(255, 0, 0) | rgb(255, 255, 255) | rgb(255, 128, 16) |
| z przezroczystością | rgba(255, 0, 0, 0.5) – czwarta liczba to krycie od 0 (przezroczysty) do 1 | ||
Przeliczanie szesnastkowe ↔ dziesiętne
Zapis #RRGGBB to trzy liczby dwucyfrowe w systemie szesnastkowym (cyfry 0–9 i A–F, gdzie A=10 … F=15). Każdą parę przelicza się osobno: pierwsza cyfra × 16 + druga cyfra.
#11FE07: 11 = 1·16+1 = 17, FE = 15·16+14 = 254, 07 = 7 →rgb(17, 254, 7)rgb(255, 16, 8): 255 = 15·16+15 = FF, 16 = 1·16+0 = 10, 8 = 08 →#FF1008#00FF00=rgb(0, 255, 0)to zielony,#000000czarny, a równe składowe (np.#808080) dają szarość.
Na egzaminie. Wystarczy sprawdzić jedną składową, która różni się między odpowiedziami. Przydatne pary: 10 = 0A, 16 = 10, 128 = 80, 200 = C8, 255 = FF.
Jednostki
px (piksel), pt (punkt drukarski), cm, mm. Nie zależą od innych elementów.em (względem czcionki rodzica), rem (względem czcionki elementu html), % (względem rodzica), vw/vh (1% szerokości/wysokości okna).Tło i listy
body {
background-color: #EEE;
background-image: url("tlo.png");
background-repeat: repeat-y; /* powtarzaj w pionie; repeat-x w poziomie, no-repeat raz */
background-position: top right;
background-attachment: fixed; /* tło stoi w miejscu przy przewijaniu; scroll przewija się z treścią */
background-size: cover;
}
ul { list-style-type: square; } /* disc, circle, square, none; dla ol: decimal, lower-alpha, upper-roman */
ul { list-style-image: url("punkt.png"); } /* własny obrazek jako punktor */Któremu zapisowi odpowiada kolor #7F00FF?
rgb(127, 255, 0)rgb(112, 0, 255)rgb(255, 0, 127)rgb(127, 0, 255)
Która jednostka rozmiaru w CSS jest względna?
empxptcm
Model pudełkowy, pozycjonowanie i strona responsywna
Każdy element strony to prostokąt z treścią, wypełnieniem, ramką i marginesem. Pytania sprawdzają, co oznaczają skrócone zapisy marginesów, ile wynosi szerokość elementu i jak działają float oraz position.
Model pudełkowy
padding to odstęp wewnątrz ramki, między treścią a ramką. margin to odstęp na zewnątrz ramki, od sąsiednich elementów. Przy domyślnym box-sizing: content-box rzeczywista szerokość elementu to:
width + padding lewy i prawy + border lewy i prawy (+ margines, jeśli liczysz zajęte miejsce)
Przykład: width: 500px; padding: 20px; border: 10px solid; daje 500 + 2·20 + 2·10 = 560 px. Z box-sizing: border-box padding i ramka mieszczą się w podanym width.
Skrócone zapisy: kolejność zgodnie z ruchem wskazówek zegara
| Zapis | Znaczenie |
|---|---|
margin: 10px; | wszystkie cztery strony 10px |
margin: 10px 20px; | góra i dół 10px, prawo i lewo 20px |
margin: 10px 20px 30px; | góra 10, prawo i lewo 20, dół 30 |
padding: 50px 20px 40px 30px; | góra 50, prawo 20, dół 40, lewo 30 |
margin: 0 auto; | wyśrodkowanie bloku o ustalonej szerokości |
border: 2px dotted gray; | grubość, styl (solid, dashed, dotted, double), kolor |
border-color: red blue green yellow; | góra czerwona, prawa niebieska, dół zielony, lewa żółta |
border-radius: 20px; | zaokrąglone rogi (50% daje koło) |
Na egzaminie. Kolejność to zawsze góra, prawo, dół, lewo (jak wskazówki zegara od godziny 12). Najczęstsza pułapka to zamiana prawego z dolnym. Pojedyncza strona to margin-top, padding-left itd.
display, float, position
| Właściwość | Wartości i działanie |
|---|---|
display | block, inline, inline-block, none (element znika i nie zajmuje miejsca), flex, grid |
visibility: hidden | element niewidoczny, ale zajmuje miejsce |
float | left / right: blok przesuwa się do krawędzi, a inne elementy opływają go z drugiej strony (np. tekst wokół obrazka). clear: both kończy opływanie. |
position | static (domyślnie), relative (przesunięcie względem własnego miejsca), absolute (względem najbliższego pozycjonowanego przodka), fixed (względem okna, nie przewija się), sticky |
top, left, …, z-index | przesunięcie elementu pozycjonowanego; z-index: kto jest na wierzchu (większy wyżej) |
overflow | hidden, scroll, auto: co zrobić z treścią, która się nie mieści |
Flexbox (display: flex) układa dzieci w rzędzie lub kolumnie (flex-direction), wyrównuje je (justify-content w osi głównej, align-items w poprzecznej) i pozwala im się zawijać (flex-wrap).
Strona responsywna (RWD)
@media (max-width: 600px) {
nav, main { width: 100%; float: none; } /* na wąskim ekranie bloki jeden pod drugim */
}Zapytanie @media stosuje reguły tylko wtedy, gdy spełniony jest warunek, np. szerokość ekranu do 600 px. Razem z <meta name="viewport"> i szerokościami w procentach daje stronę, która dopasowuje się do telefonu, tabletu i komputera.
Ile wynosi prawy margines wewnętrzny przy padding: 5px 10px 15px 20px;?
- 5px
- 15px
- 10px
- 20px
Jaką szerokość zajmie na ekranie blok: width: 400px; padding: 10px; border: 5px solid; (bez marginesów, box-sizing domyślny)?
- 400 px
- 430 px
- 415 px
- 420 px
Która deklaracja ukrywa element tak, że nie zajmuje on miejsca na stronie?
display: none;visibility: hidden;opacity: 0;color: transparent;
Grafika: modele barw, formaty i obróbka
Pytania z grafiki dotyczą różnicy między grafiką rastrową a wektorową, modeli barw, formatów plików i narzędzi edytorów takich jak GIMP czy Photoshop.
Rastrowa czy wektorowa
W programach wektorowych kształty łączy się operacjami logicznymi: suma (połączenie dwóch figur w jedną), różnica (wycięcie jednej z drugiej), część wspólna (iloczyn) i wykluczenie.
Modele barw
| Model | Składowe | Gdzie |
|---|---|---|
| RGB | czerwony, zielony, niebieski; mieszanie addytywne (suma daje biel) | monitory, ekrany, strony WWW |
| CMYK | cyjan (turkusowy), magenta (purpurowy), żółty, czarny (K); mieszanie subtraktywne | druk |
| HSV / HSB | barwa (odcień), nasycenie, jasność; przedstawiany jako stożek | wybór koloru w edytorach |
| HSL | barwa, nasycenie, jasność (lightness) | CSS: hsl(120, 100%, 50%) |
| Lab | jasność i dwie osie barw; niezależny od urządzenia | konwersje między urządzeniami |
Na egzaminie. Ekran → RGB, druk → CMYK, stożek „barwa, nasycenie, jasność” → HSV. Przeliczanie rgb() na zapis szesnastkowy znajdziesz w lekcji 5.
Rozdzielczość i głębia koloru
- Rozdzielczość obrazu to liczba pikseli w poziomie i pionie, np. Full HD = 1920 × 1080, HD = 1280 × 720, 4K = 3840 × 2160.
- DPI / PPI (punkty / piksele na cal) to gęstość. Do druku stosuje się zwykle 300 dpi, do ekranu ok. 72–96 ppi.
- Głębia koloru to liczba bitów na piksel: 1 bit = 2 kolory, 8 bitów = 256 kolorów (np. GIF), 24 bity = ok. 16,7 mln kolorów (true color), 32 bity = 24 bity koloru + 8 bitów kanału alfa.
- Kanał alfa przechowuje przezroczystość każdego piksela. Ma go PNG (i GIF w uproszczonej formie: piksel albo całkiem przezroczysty, albo nie). JPG nie obsługuje przezroczystości.
Formaty plików graficznych
| Format | Kompresja | Cechy |
|---|---|---|
| JPG (JPEG) | stratna | zdjęcia, 16,7 mln kolorów, bez przezroczystości, stopień kompresji do wyboru |
| PNG | bezstratna | przezroczystość (kanał alfa), grafika na strony |
| GIF | bezstratna (LZW) | max 256 kolorów, prosta animacja, przezroczystość jednego koloru |
| BMP | zwykle brak | duże pliki, grafika Windows |
| TIFF | bezstratna lub brak | druk, skanowanie, wiele warstw |
| WebP | stratna lub bezstratna | nowoczesny format na strony, mniejsze pliki |
| SVG | — | grafika wektorowa zapisana w XML, skaluje się bez utraty jakości |
| PSD, XCF | — | pliki robocze Photoshopa / GIMP-a z warstwami |
Kompresja stratna usuwa część informacji (plik mniejszy, jakość gorsza i nie da się jej odzyskać). Bezstratna pozwala odtworzyć dane co do bitu.
Narzędzia i operacje w edytorach rastrowych
| Narzędzie / operacja | Działanie |
|---|---|
| kadrowanie | wycięcie fragmentu obrazu, usunięcie zbędnych brzegów |
| skalowanie | zmiana rozmiaru w pikselach (powiększanie bitmapy pogarsza jakość) |
| różdżka | zaznaczenie obszaru o podobnym kolorze |
| lasso | zaznaczenie odręczne lub wielokątne |
| stempel (klonowanie) | kopiowanie fragmentu obrazu w inne miejsce, retusz |
| rozmycie Gaussa | zmiękczenie obrazu, usunięcie szczegółów |
| wyostrzanie, maska wyostrzająca | podkreślenie krawędzi |
| warstwy | niezależne poziomy obrazu, które można edytować osobno |
| histogram, poziomy, krzywe | rozkład jasności pikseli, korekta jasności i kontrastu |
| desaturacja | usunięcie kolorów (odcienie szarości) |
W jakim formacie zapisać logo z półprzezroczystym cieniem, aby na stronie było widać tło pod cieniem?
- JPG
- PNG
- BMP
- GIF
Który format pozwala dowolnie powiększyć logo bez utraty jakości?
- JPG
- BMP
- PNG
- SVG
Dźwięk, wideo i animacja
Ta część sprawdza podstawy fizyki dźwięku, cyfrowego zapisu dźwięku i obrazu ruchomego, formaty plików i znaczniki HTML5 <audio> i <video>.
Dźwięk
- Wysokość dźwięku zależy od częstotliwości drgań (Hz). Człowiek słyszy ok. 20 Hz – 20 kHz.
- Głośność zależy od amplitudy drgań i mierzy się ją w decybelach (dB).
- Barwa zależy od składu harmonicznych, dzięki niej odróżniamy instrumenty.
Zamiana dźwięku analogowego na cyfrowy to próbkowanie (pomiar fali wiele razy na sekundę) i kwantyzacja (zapis każdej próbki liczbą o określonej liczbie bitów).
Rozmiar nieskompresowanego dźwięku: częstotliwość × bity × kanały × czas. Minuta jakości CD: 44 100 · 16 · 2 · 60 = 84 672 000 bitów ≈ 10 MB.
| Format dźwięku | Kompresja |
|---|---|
| WAV, AIFF | zwykle bez kompresji (duże pliki) |
| FLAC, ALAC | bezstratna |
| MP3, AAC, OGG (Vorbis), WMA, Opus | stratna (małe pliki) |
| MIDI | nie zawiera dźwięku, tylko instrukcje: jaka nuta, jak długo, jakim instrumentem |
Edytor dźwięku to np. Audacity (bezpłatny). Typowe operacje: przycinanie, normalizacja (ustawienie głośności na zadany poziom), odszumianie, wyciszanie (fade in / fade out), zmiana tempa i wysokości, efekty echa.
Wideo i animacja
- Ruch powstaje z szybko wyświetlanych klatek. Obraz wydaje się płynny od ok. 24–30 klatek na sekundę (fps). Kino używa 24 fps, telewizja 25 lub 30.
- Kontener (MP4, AVI, MKV, MOV, WebM, OGG) przechowuje obraz, dźwięk i napisy. Kodek (H.264, H.265/HEVC, VP9, AV1) kompresuje sam obraz.
- Prostą animację zapisze GIF (wiele klatek w jednym pliku, bez dźwięku). Animacje na stronach robi się dziś w CSS (
@keyframes,transition) albo JavaScripcie. - Montaż wideo: Shotcut, OpenShot, DaVinci Resolve, Adobe Premiere.
Multimedia na stronie
<video width="640" controls autoplay muted loop poster="kadr.jpg">
<source src="film.mp4" type="video/mp4">
<source src="film.webm" type="video/webm">
Twoja przeglądarka nie obsługuje wideo.
</video>
<audio src="muzyka.mp3" controls></audio>controlspokazuje przyciski odtwarzania,autoplayodtwarza od razu,mutedwycisza,looppowtarza,posterto obraz przed startem.- Kilka
<source>pozwala podać ten sam film w różnych formatach. Przeglądarka weźmie pierwszy, który umie odtworzyć. Tekst wewnątrz znacznika zobaczą tylko przeglądarki bez obsługi HTML5. - Formaty wideo w HTML5: MP4, WebM, Ogg. Formaty audio: MP3, WAV, Ogg.
- Starsze sposoby osadzania to
<embed>i<object>(np. animacje Flash .swf, dziś nieobsługiwane).
Od czego zależy wysokość dźwięku?
- od amplitudy drgań
- od liczby kanałów
- od częstotliwości drgań
- od przepływności
Który atrybut znacznika <video> wycisza dźwięk filmu?
mutedsilentvolume="0"controls
JavaScript: składnia, DOM i zdarzenia
JavaScript działa w przeglądarce (po stronie klienta) i ożywia stronę: reaguje na kliknięcia, zmienia treść i style, sprawdza formularze. Pytania pokazują krótki kod i pytają, co wypisze albo co zmieni na stronie.
Zmienne i typy
let wiek = 17; // number (liczby całkowite i ułamki to ten sam typ)
const imie = "Ala"; // string; const nie da się przypisać ponownie
var zdane = true; // boolean; var to starszy sposób deklaracji
let lista = [3, 5, 8]; // tablica, indeksy od 0: lista[0] to 3
let osoba = { imie: "Ala", wiek: 17 }; // obiekt: osoba.imie
typeof wiek // "number"JavaScript ma typowanie dynamiczne: typ zależy od przypisanej wartości. Wartość z pola formularza jest zawsze tekstem, więc przed liczeniem trzeba ją zamienić: parseInt("12") daje liczbę całkowitą 12, parseFloat("3.5") liczbę rzeczywistą, a Number() dowolną liczbę.
Operatory
| Operator | Znaczenie | Przykład |
|---|---|---|
+ | dodawanie albo łączenie tekstów | "2" + 3 → "23" |
% | reszta z dzielenia | 7 % 3 → 1 |
== / === | równe co do wartości / wartości i typu | 5 == "5" → true, 5 === "5" → false |
!=, !== | różne | |
&&, ||, ! | i, lub, nie | x > 0 && x < 10 |
++, += | zwiększenie o 1 / o wartość | i++ to to samo co i += 1 |
Na egzaminie. Pojedynczy = to przypisanie, nie porównanie. if (x = 5) przypisuje 5 i warunek jest zawsze prawdziwy. To częsty „błąd logiczny” w pytaniach.
Instrukcje sterujące
if (ocena >= 2) { wynik = "zdane"; } else { wynik = "niezdane"; }
for (let i = 0; i < 5; i++) { suma += i; } // 5 obrotów: i = 0, 1, 2, 3, 4
while (n > 0) { n--; }
do { … } while (warunek); // wykona się co najmniej raz
switch (dzien) { case 1: … break; default: … }
function pole(a, b) { return a * b; } // funkcja z wynikiemOkna dialogowe i wypisywanie
alert("tekst")– okno z komunikatem i przyciskiem OK.prompt("Podaj imię", "Jan")– okno z polem do wpisania; zwraca wpisany tekst, drugi argument to wartość domyślna.confirm("Na pewno?")– okno OK / Anuluj; zwraca true albo false.document.write("tekst")– wpisuje tekst do dokumentu,console.log()– wypisuje w konsoli przeglądarki (F12).
MessageBox(), echo czy print() nie są funkcjami JavaScriptu w przeglądarce.
DOM, czyli zmiany na stronie
let el = document.getElementById("wynik"); // element o id="wynik"
el.innerHTML = "<b>Gotowe</b>"; // zmiana zawartości (z interpretacją znaczników)
el.style.color = "red"; // zmiana stylu: właściwości CSS z myślnikiem piszemy camelCase
el.style.backgroundColor = "yellow";
document.getElementById("pole").value; // wartość pola formularza (tekst)
document.getElementById("obraz").src = "b.png"; // podmiana obrazka
document.querySelector(".menu"); // pierwszy element pasujący do selektora CSSZdarzenia
| Zdarzenie | Kiedy zachodzi |
|---|---|
onclick | kliknięcie |
onload | wczytanie strony lub obrazu |
onmouseover / onmouseout | najechanie / zjechanie kursorem |
onkeydown, onkeyup | naciśnięcie / puszczenie klawisza |
onchange, oninput | zmiana wartości pola |
onsubmit | wysyłanie formularza (np. walidacja przed wysłaniem) |
onfocus, onblur | wejście do pola / wyjście z pola |
<button onclick="policz()">Oblicz</button>
<!-- albo w skrypcie: -->
document.getElementById("btn").addEventListener("click", policz);Napisy, tablice, Math, Date
tekst.length– długość;tekst.substring(2, 6)– znaki od indeksu 2 do 5;toUpperCase(),indexOf("a"),split(","),replace("a", "b").tab.push(x)dodaje na końcu,tab.pop()usuwa ostatni,tab.lengthto liczba elementów,tab.sort()sortuje.Math.random()– liczba z przedziału [0, 1);Math.floor()zaokrągla w dół,Math.round()do najbliższej,Math.ceil()w górę;Math.max(),Math.pow(),Math.sqrt().new Date()– bieżąca data;getFullYear(),getMonth()(miesiące od 0),getDate(),getDay()(0 = niedziela).
Jaką wartość będzie miała zmienna x po wykonaniu let x = "5" + 2;?
7"52"NaN- błąd
Który zapis wstawia tekst „OK” do elementu <p id="info">?
document.info.text = "OK";getElement("info") = "OK";document.write("#info", "OK");document.getElementById("info").innerHTML = "OK";
Jaki jest wynik porównania 5 === "5"?
falsetrue"5"undefined
PHP: język po stronie serwera
Skrypt PHP wykonuje się na serwerze, a do przeglądarki trafia już tylko wynik w postaci HTML. Dlatego użytkownik nie widzi kodu PHP w źródle strony. Pytania dotyczą składni, tablic, pętli, funkcji wbudowanych i danych z formularzy.
Składnia
<?php
$imie = "Ala"; // zmienna zaczyna się od $
$wiek = 17;
echo "Cześć, $imie!"; // w cudzysłowie podwójnym zmienna jest podstawiana
echo 'Cześć, $imie!'; // w pojedynczym nie: wypisze dosłownie $imie
echo "Masz " . $wiek . " lat"; // kropka łączy teksty (konkatenacja)
# komentarz jednoliniowy, /* komentarz blokowy */
?>- Każda instrukcja kończy się średnikiem. Nazwy zmiennych rozróżniają wielkość liter.
- Typy:
int(całkowite),float(zmiennoprzecinkowe),string,bool,array,null. Typ zależy od wartości (typowanie dynamiczne). - Wypisywanie:
echo,print,printf(); podgląd zmiennej:var_dump(),print_r(). phpinfo();wypisuje pełną konfigurację PHP na serwerze.include/requiredołączają inny plik. Przy braku pliku include tylko ostrzega, require przerywa skrypt.
Na egzaminie. Łączenie tekstów w PHP to kropka (.), a w JavaScripcie plus. Operator .= dokleja tekst do zmiennej.
Tablice
$liczby = array(4, 7, 9); // lub [4, 7, 9]; indeksy od 0
echo $liczby[1]; // 7
$osoba = array("imie" => "Jan", "wiek" => 30); // tablica asocjacyjna: klucz => wartość
echo $osoba["imie"]; // Jan
foreach ($osoba as $klucz => $wartosc) { echo "$klucz: $wartosc<br>"; }
count($liczby); // liczba elementów: 3Sortowanie: sort() rosnąco według wartości, rsort() malejąco, asort() według wartości z zachowaniem kluczy, ksort() według kluczy.
Pętle i warunki
for ($i = 1; $i <= 5; $i++) { echo $i; } // 12345
while ($x < 10) { $x += 3; }
foreach ($tablica as $element) { … } // każdy element tablicy po kolei
if ($a > 0 && $a < 10) { … } elseif ($a == 0) { … } else { … }Funkcje wbudowane, o które pyta CKE
| Funkcja | Działanie |
|---|---|
strlen($s) | długość napisu |
substr($s, 2, 3) | 3 znaki od indeksu 2 |
str_replace("kota", "psa", $s) | zamiana: szukane, nowe, w czym |
strtoupper(), strtolower(), ucfirst() | wielkie / małe litery / pierwsza wielka |
strpos($s, "a"), strstr() | pozycja / fragment od wystąpienia |
trim() | usuwa spacje z początku i końca |
explode(",", $s) / implode(",", $t) | napis → tablica / tablica → napis |
rand(1, 6) | losowa liczba całkowita z zakresu |
date("Y-m-d H:i") | bieżąca data i czas (Y = rok, m = miesiąc, d = dzień, l = nazwa dnia, F = nazwa miesiąca) |
isset($x), empty($x) | czy zmienna istnieje / czy jest pusta |
is_int(), is_float(), is_numeric() | sprawdzanie typu |
Dane z formularza, sesje, ciasteczka
$_GET['pole']i$_POST['pole']– dane z formularza wysłanego odpowiednią metodą;$_REQUEST– z obu.$_SESSION– dane zapamiętane na serwerze dla jednego użytkownika między stronami. Wymagasession_start();na początku skryptu, kończy sięsession_destroy().setcookie("nazwa", "wartosc", time() + 3600);– ciasteczko zapisane w przeglądarce (tu na godzinę); odczyt przez$_COOKIE['nazwa'].$_SERVER– informacje o serwerze i żądaniu,$_FILES– przesłane pliki.
Jak połączyć w PHP tekst „Wynik: ” z wartością zmiennej $x?
"Wynik: " + $x"Wynik: " & $x"Wynik: " . $xconcat("Wynik: ", x)
Ile razy wykona się pętla for ($i = 0; $i < 10; $i += 2)?
- 10
- 5
- 4
- 6
Gdzie są przechowywane dane zapisane w $_SESSION?
- na serwerze
- w ciasteczku w przeglądarce
- w adresie URL
- w bazie danych MySQL
Połączenie PHP z bazą danych
W części praktycznej strona prawie zawsze pobiera dane z bazy. Pytania teoretyczne sprawdzają kolejność kroków i rolę funkcji z biblioteki mysqli.
Cztery kroki
<?php
// 1. połączenie: serwer, użytkownik, hasło, nazwa bazy
$polaczenie = mysqli_connect("localhost", "root", "", "szkola");
if (!$polaczenie) { die("Błąd połączenia z serwerem SQL"); }
// 2. wysłanie zapytania
$wynik = mysqli_query($polaczenie, "SELECT imie, nazwisko FROM uczniowie");
// 3. odczyt wyniku wiersz po wierszu
while ($wiersz = mysqli_fetch_array($wynik)) {
echo $wiersz["imie"] . " " . $wiersz[1] . "<br>";
}
// 4. zamknięcie połączenia
mysqli_close($polaczenie);
?>Funkcje mysqli
| Funkcja | Co robi / co zwraca |
|---|---|
mysqli_connect(serwer, user, hasło, baza) | nawiązuje połączenie; zwraca uchwyt albo false |
mysqli_connect_errno(), mysqli_connect_error() | numer / opis błędu połączenia |
mysqli_select_db($p, "baza") | wybiera bazę, jeśli nie podano jej przy łączeniu |
mysqli_query($p, $sql) | wykonuje zapytanie. Dla SELECT zwraca zbiór wyników, dla INSERT/UPDATE/DELETE true/false |
mysqli_fetch_row($w) | kolejny wiersz jako tablica numeryczna: $r[0], $r[1] |
mysqli_fetch_assoc($w) | wiersz jako tablica asocjacyjna: $r["imie"] |
mysqli_fetch_array($w) | wiersz z oboma rodzajami indeksów |
mysqli_num_rows($w) | liczba wierszy w wyniku SELECT |
mysqli_affected_rows($p) | liczba wierszy zmienionych przez INSERT/UPDATE/DELETE |
mysqli_error($p) | opis ostatniego błędu zapytania |
mysqli_real_escape_string($p, $s) | zabezpiecza tekst przed wstawieniem do zapytania (ochrona przed SQL injection) |
mysqli_close($p) | zamyka połączenie |
Funkcje z przedrostkiem mysql_ (bez „i”) to stara, usunięta z PHP 7 biblioteka. Mogą pojawić się w starszych pytaniach: mysql_fetch_row działa tak samo jak mysqli_fetch_row. Nowocześniejszą alternatywą jest PDO.
Na egzaminie. mysqli_num_rows() ma sens tylko po SELECT, bo liczy wiersze wyniku. Po INSERT, UPDATE czy DELETE liczbę zmienionych wierszy daje mysqli_affected_rows(). W mysqli pierwszym argumentem mysqli_query jest połączenie, a drugim zapytanie.
Wstawianie danych z formularza
$imie = $_POST["imie"];
$sql = "INSERT INTO uczniowie (imie, klasa) VALUES ('$imie', '3A')";
mysqli_query($polaczenie, $sql);Teksty w zapytaniu SQL muszą być w apostrofach. Wstawianie danych od użytkownika wprost do zapytania grozi atakiem SQL injection. Zabezpiecza przed nim mysqli_real_escape_string() albo zapytania przygotowane (mysqli_prepare, PDO). Więcej w lekcji 16.
Co zwraca mysqli_num_rows($wynik)?
- liczbę kolumn tabeli
- numer ostatnio dodanego rekordu
- liczbę zmienionych rekordów
- liczbę wierszy w wyniku zapytania SELECT
Wiersz pobrano funkcją $r = mysqli_fetch_row($wynik). Jak odczytać pierwszą kolumnę?
$r["1"]$r[0]$r->first$r[1]
Relacyjne bazy danych: pojęcia, klucze, normalizacja
Zanim napiszesz zapytanie, musisz wiedzieć, jak baza jest zbudowana. Pytania z teorii dotyczą słownictwa (krotka, encja, atrybut), kluczy, rodzajów relacji, normalizacji i transakcji.
Słownik
| Pojęcie | Znaczenie |
|---|---|
| tabela (relacja) | zbiór danych o jednym rodzaju obiektów, np. uczniowie |
| rekord, wiersz, krotka | dane jednego obiektu (jeden wiersz tabeli bez nagłówka) |
| pole, kolumna, atrybut | jedna cecha, np. nazwisko; ma nazwę i typ |
| encja | obiekt w modelu bazy (na diagramie ERD): czytelnik, książka, wypożyczenie |
| dziedzina | zbiór dopuszczalnych wartości atrybutu |
| SZBD (DBMS) | system zarządzania bazą danych: MySQL, MariaDB, PostgreSQL, MS SQL Server, Oracle, SQLite |
Klucze
- Klucz główny (podstawowy, PRIMARY KEY) jednoznacznie identyfikuje rekord: jest unikalny i nie może być pusty (NULL). Tabela ma jeden klucz główny, ale może on składać się z kilku pól (klucz złożony).
- Klucz główny często ma atrybut
AUTO_INCREMENT: przy dodawaniu rekordu baza sama nadaje kolejną liczbę. - Klucz obcy (FOREIGN KEY) to pole wskazujące na klucz główny w innej tabeli. Tworzy relację i pilnuje integralności referencyjnej: nie wstawisz wypożyczenia czytelnika, którego nie ma.
- Klucz kandydujący to każde pole (zestaw pól), które mogłoby być kluczem głównym; indeks przyspiesza wyszukiwanie po danym polu.
Relacje między tabelami
Normalizacja
Normalizacja to dzielenie tabel tak, aby usunąć redundancję (powtarzanie tych samych danych) i anomalie przy dodawaniu, zmianie i usuwaniu danych.
- 1NF – każde pole zawiera jedną, niepodzielną wartość (nie „Jan, Anna” w jednej komórce), wiersze się nie powtarzają, jest klucz główny.
- 2NF – 1NF i każde pole niekluczowe zależy od całego klucza głównego, a nie od jego części.
- 3NF – 2NF i pola niekluczowe nie zależą od siebie nawzajem (brak zależności przechodnich), np. nazwa miasta nie zależy od kodu pocztowego w tej samej tabeli.
Transakcje i ACID
Transakcja to grupa operacji wykonywana w całości albo wcale, np. przelew: odjęcie z jednego konta i dodanie do drugiego. Polecenia: START TRANSACTION, COMMIT (zatwierdź), ROLLBACK (wycofaj). Cechy ACID:
Typy danych w MySQL
| Typ | Przeznaczenie |
|---|---|
INT, TINYINT, BIGINT | liczby całkowite różnych zakresów |
DECIMAL(10,2) | liczby dokładne, np. kwoty z groszami (10 cyfr, 2 po przecinku) |
FLOAT, DOUBLE | liczby zmiennoprzecinkowe (przybliżone) |
CHAR(n) / VARCHAR(n) | tekst stałej długości / zmiennej długości do n znaków |
TEXT | długi tekst |
DATE, TIME, DATETIME, YEAR | data, czas, data z czasem, rok |
BOOLEAN | prawda/fałsz (w MySQL to TINYINT(1)) |
ENUM('a','b') | jedna wartość z listy |
BLOB | dane binarne: obrazy, pliki |
Czym w relacyjnej bazie danych jest krotka?
- kolumną tabeli
- kluczem obcym
- wierszem tabeli
- całą bazą
Jak w bazie relacyjnej zapisać relację wiele do wielu (uczniowie – koła zainteresowań)?
- tabelą pośredniczącą z dwoma kluczami obcymi
- kluczem obcym w tabeli uczniowie
- wpisaniem kilku kół w jednym polu
- jedną tabelą z kluczem złożonym z nazwisk
Które zdanie o kluczu głównym jest prawdziwe?
- może zawierać powtarzające się wartości
- może być pusty (NULL)
- musi być typu tekstowego
- jednoznacznie identyfikuje każdy rekord
Zapytania wybierające: SELECT
SELECT to najczęstsze polecenie na egzaminie, w teorii i w praktyce. Pytania pokazują tabelę z kilkoma rekordami i zapytanie, a ty masz wskazać wynik. Rób to krok po kroku, w kolejności, w jakiej wykonuje się zapytanie.
Budowa zapytania
SELECT kolumny -- 5. co pokazać
FROM tabela -- 1. z jakiej tabeli
WHERE warunek -- 2. które wiersze
GROUP BY kolumna -- 3. grupowanie
HAVING warunek_na_grupach -- 4. które grupy
ORDER BY kolumna ASC|DESC -- 6. sortowanie (ASC rosnąco – domyślnie, DESC malejąco)
LIMIT 3; -- 7. ile wierszySELECT *– wszystkie kolumny;SELECT DISTINCT miasto– bez powtórzeń.SELECT cena * 1.23 AS brutto– wyliczona kolumna z nazwą (alias).- Teksty i daty zapisuje się w apostrofach:
WHERE miasto = 'Płock',WHERE data > '2024-01-01'.
Warunki w WHERE
| Zapis | Znaczenie |
|---|---|
=, <> (lub !=), >, <= | porównania |
AND, OR, NOT | łączenie warunków (AND ma pierwszeństwo przed OR, w razie wątpliwości użyj nawiasów) |
BETWEEN 10 AND 20 | od 10 do 20 włącznie |
IN ('Płock', 'Toruń') | jedna z wartości z listy |
IS NULL, IS NOT NULL | pole puste / niepuste (nie = NULL!) |
LIKE 'Kr%' | % – dowolny ciąg znaków (także pusty) |
LIKE '_e%' | _ – dokładnie jeden znak: druga litera to „e” |
Na egzaminie. LIKE '%a' to tekst kończący się na „a”, 'a%' zaczynający się od „a”, '%a%' zawierający „a” gdziekolwiek. W MySQL LIKE zwykle nie rozróżnia wielkości liter, więc '%kr%' pasuje też do „Krystyna”.
Funkcje agregujące i grupowanie
SELECT COUNT(*) FROM uczniowie; -- liczba wierszy
SELECT AVG(ocena), MAX(ocena), MIN(ocena), SUM(punkty) FROM wyniki;
SELECT klasa, COUNT(*) AS ilu FROM uczniowie GROUP BY klasa; -- liczba uczniów w każdej klasie
SELECT klasa, AVG(ocena) FROM oceny GROUP BY klasa HAVING AVG(ocena) > 4; -- tylko klasy ze średnią powyżej 4COUNT(*)liczy wiersze,COUNT(pole)liczy tylko wiersze z niepustym polem.WHEREfiltruje wiersze przed grupowaniem,HAVINGfiltruje grupy po grupowaniu (można w nim użyć funkcji agregujących).- Funkcje działające na pojedynczych wartościach:
UPPER(),LOWER(),LENGTH(),CONCAT(),ROUND(),YEAR(),NOW().
Łączenie tabel: JOIN
SELECT filmy.tytul, rezyserzy.nazwisko
FROM filmy JOIN rezyserzy ON filmy.rezyserID = rezyserzy.id;- Warunek
ONłączy klucz obcy jednej tabeli z kluczem głównym drugiej. JOIN(=INNER JOIN) zwraca tylko pary, które do siebie pasują.LEFT JOINzwraca wszystkie wiersze lewej tabeli, także bez pary (wtedy pola prawej to NULL).RIGHT JOINodwrotnie.- Starszy zapis bez JOIN:
FROM filmy, rezyserzy WHERE filmy.rezyserID = rezyserzy.id.
Podzbiory języka SQL: DQL – zapytania (SELECT), DML – zmiana danych (INSERT, UPDATE, DELETE), DDL – struktura (CREATE, ALTER, DROP), DCL – uprawnienia (GRANT, REVOKE).
W algebrze relacji: selekcja to wybór wierszy (WHERE), projekcja to wybór kolumn (lista po SELECT), złączenie to JOIN.
Które nazwisko spełnia warunek nazwisko LIKE '_a%'?
- Adamski
- Nawrocki
- Kowalska
- Zieliński
Której klauzuli użyć, aby pokazać tylko klasy, w których liczba uczniów przekracza 25?
WHERE COUNT(*) > 25ORDER BY COUNT(*) > 25HAVING COUNT(*) > 25LIMIT 25
Tabela ma ceny 5, 10, 15, 20, 25. Ile rekordów zwróci WHERE cena BETWEEN 10 AND 20?
- 3
- 1
- 2
- 4
Zmiana danych, struktura tabel i uprawnienia
Poza SELECT egzamin sprawdza polecenia, które zmieniają dane (DML), strukturę bazy (DDL) i uprawnienia użytkowników (DCL), a także kopie zapasowe i phpMyAdmin.
Zmiana danych (DML)
INSERT INTO uczniowie (imie, nazwisko, klasa) VALUES ('Jan', 'Nowak', '3A');
UPDATE produkty SET cena = cena * 0.9 WHERE kategoria = 'AGD'; -- obniżka o 10%
DELETE FROM mieszkancy WHERE status = 1;Na egzaminie. UPDATE i DELETE bez WHERE zmieniają albo usuwają wszystkie rekordy tabeli. DELETE usuwa rekordy, a tabela zostaje. DROP TABLE usuwa całą tabelę ze strukturą, a TRUNCATE usuwa wszystkie rekordy naraz.
Struktura (DDL)
CREATE DATABASE szkola;
CREATE TABLE ksiazki (
id INT PRIMARY KEY AUTO_INCREMENT,
tytul VARCHAR(100) NOT NULL,
cena DECIMAL(6,2) DEFAULT 0,
autor INT,
FOREIGN KEY (autor) REFERENCES autorzy(id)
);
ALTER TABLE ksiazki ADD rok YEAR; -- nowa kolumna
ALTER TABLE ksiazki MODIFY cena FLOAT; -- zmiana typu kolumny
ALTER TABLE ksiazki CHANGE rok rok_wydania YEAR; -- zmiana nazwy (i typu)
ALTER TABLE ksiazki DROP COLUMN rok_wydania; -- usunięcie kolumny
ALTER TABLE uczniowie ADD PRIMARY KEY (id);
DROP TABLE ksiazki; -- usunięcie tabeli
CREATE VIEW tanie AS SELECT * FROM ksiazki WHERE cena < 20; -- widok, czyli zapisane zapytanie| Klauzula | Znaczenie |
|---|---|
PRIMARY KEY | klucz główny: unikalny i niepusty |
AUTO_INCREMENT | kolejne liczby nadawane automatycznie |
NOT NULL | pole musi mieć wartość |
UNIQUE | wartości nie mogą się powtarzać (ale mogą być puste) |
DEFAULT x | wartość domyślna, gdy jej nie podano |
FOREIGN KEY … REFERENCES | klucz obcy wskazujący inną tabelę |
CHECK (cena > 0) | warunek, który musi spełniać wartość |
Użytkownicy i uprawnienia (DCL)
CREATE USER 'adam'@'localhost' IDENTIFIED BY 'Haslo1!';
GRANT SELECT, INSERT, UPDATE ON sklep.klienci TO 'adam'@'localhost';
GRANT ALL PRIVILEGES ON sklep.* TO 'admin'@'localhost' WITH GRANT OPTION;
REVOKE DELETE, UPDATE ON sklep.klienci FROM 'adam'@'localhost';
SHOW GRANTS FOR 'adam'@'localhost';
DROP USER 'adam'@'localhost';GRANTnadaje,REVOKE … FROModbiera uprawnienia.sklep.*to wszystkie tabele bazy sklep,*.*to wszystkie bazy.WITH GRANT OPTIONpozwala użytkownikowi przekazywać swoje uprawnienia innym.- Uprawnienia do danych: SELECT, INSERT, UPDATE, DELETE. Do struktury: CREATE, ALTER, DROP, INDEX. Administracyjne: CREATE USER, GRANT OPTION.
- Role (
CREATE ROLE) grupują uprawnienia, które potem nadaje się wielu użytkownikom naraz.
Na egzaminie. Przy kilku poleceniach GRANT i REVOKE dla kilku osób rozpisz sobie małą tabelkę: kto, jakie prawo, na jakiej tabeli. Pamiętaj, że REVOKE odbiera tylko wymienione uprawnienia, a reszta zostaje.
Kopie zapasowe i phpMyAdmin
- phpMyAdmin to aplikacja WWW do zarządzania MySQL/MariaDB, wbudowana w pakiet XAMPP. Pozwala tworzyć tabele, pisać zapytania, eksportować bazę do pliku .sql (kopia zapasowa) i importować ją z powrotem.
- Z wiersza poleceń kopię robi
mysqldump -u root -p szkola > kopia.sql. - Przed kopią warto sprawdzić spójność bazy. Kopię trzeba przechowywać poza serwerem i co jakiś czas sprawdzać, czy da się ją odtworzyć.
Które polecenie podniesie cenę wszystkich produktów z kategorii „gry” o 5 zł?
INSERT INTO produkty (cena) VALUES (cena + 5) WHERE kategoria = 'gry';ALTER TABLE produkty SET cena = cena + 5;UPDATE produkty SET cena = cena + 5;UPDATE produkty SET cena = cena + 5 WHERE kategoria = 'gry';
Którym poleceniem odebrać użytkownikowi prawo usuwania rekordów?
GRANT NO DELETE ON baza.* TO 'jan'@'localhost';REVOKE DELETE ON baza.* FROM 'jan'@'localhost';DROP DELETE FROM 'jan'@'localhost';DELETE GRANT FROM 'jan'@'localhost';
Jak strona trafia do przeglądarki. Systemy CMS
Ta lekcja porządkuje to, co dzieje się między serwerem a przeglądarką: protokoły, porty, domeny, podział na stronę klienta i serwera, a także systemy zarządzania treścią.
Klient i serwer
Typowy zestaw do uruchomienia strony z PHP to serwer WWW Apache + PHP + MySQL/MariaDB. Pakiet XAMPP instaluje je razem (plus phpMyAdmin), WAMP i LAMP to podobne zestawy na Windows i Linux. Inne serwery WWW: nginx, Microsoft IIS.
Protokoły i porty
| Protokół | Do czego | Port |
|---|---|---|
| HTTP | przesyłanie stron WWW | 80 |
| HTTPS | HTTP szyfrowany protokołem TLS (SSL); kłódka w pasku adresu | 443 |
| FTP | przesyłanie plików, np. publikacja strony na serwerze | 21 (i 20) |
| SFTP / FTPS | szyfrowane przesyłanie plików | 22 / 990 |
| SSH | bezpieczne zdalne logowanie do serwera | 22 |
| DNS | zamiana nazwy domeny na adres IP | 53 |
| SMTP / POP3 / IMAP | wysyłanie / odbieranie poczty | 25 / 110 / 143 |
| MySQL | połączenie z serwerem bazy | 3306 |
W pliku konfiguracyjnym Apache httpd.conf linia Listen 80 ustawia port, na którym serwer nasłuchuje. Program do FTP to np. FileZilla: łączy się z serwerem (adres, login, hasło) i kopiuje pliki strony do katalogu publicznego (np. public_html, htdocs).
Adres strony
https://www.zstplock.pl:443/materialy/index.html?id=5#sekcja to: protokół, nazwa domeny (www to subdomena, .pl domena najwyższego poziomu), port, ścieżka do pliku, parametry zapytania (GET) i kotwica. Domenę kupuje się u rejestratora, a DNS kieruje ją na adres IP serwera hostingowego. Parkowanie domeny to skierowanie jej na tymczasową stronę, zanim powstanie właściwa.
Kody odpowiedzi HTTP
| Kod | Znaczenie |
|---|---|
| 200 OK | wszystko w porządku |
| 301 / 302 | przekierowanie stałe / tymczasowe |
| 403 Forbidden | brak dostępu |
| 404 Not Found | zasób nie istnieje (zły adres) |
| 500 Internal Server Error | błąd po stronie serwera, np. w skrypcie |
Ciasteczka i sesje
HTTP jest bezstanowy: serwer nie pamięta poprzednich żądań. Do zapamiętywania stanu służą ciasteczka (małe pliki tekstowe zapisane w przeglądarce, np. zapamiętanie głosu w ankiecie, wybranego języka, zawartości koszyka) i sesje (dane na serwerze, a w ciasteczku tylko ich identyfikator).
Systemy CMS
CMS (Content Management System, system zarządzania treścią) pozwala prowadzić stronę bez programowania. Treść przechowuje w bazie danych, a wygląd określa szablon (motyw). Przykłady: WordPress, Joomla!, Drupal, PrestaShop i Magento (sklepy). Apache, XAMPP, Flash czy Photoshop nie są systemami CMS.
| Pojęcie | Znaczenie |
|---|---|
| motyw / szablon | wygląd całej strony |
| wtyczka (plugin) / rozszerzenie | dodatkowa funkcja, np. formularz, galeria, SEO |
| widżet / moduł | blok treści w wybranym miejscu szablonu, np. kalendarz w panelu bocznym |
| wpis / strona | w WordPressie: treść chronologiczna z kategoriami / treść stała, np. „Kontakt” |
| panel administracyjny | zaplecze do zarządzania (w WordPressie /wp-admin) |
| role użytkowników | np. administrator, redaktor, autor, subskrybent |
Instalacja CMS: utwórz bazę danych i jej użytkownika, wgraj pliki na serwer (FTP), uruchom instalator w przeglądarce i podaj dane połączenia z bazą.
Które oprogramowanie nie jest systemem CMS?
- WordPress
- Joomla!
- Apache
- Drupal
Jaki kod HTTP zwróci serwer, gdy użytkownik wpisze adres nieistniejącej strony?
- 404
- 200
- 500
- 301
Co z wymienionych działa po stronie klienta?
- PHP
- MySQL
- Apache
- CSS
Bezpieczeństwo, prawo autorskie, dostępność i SEO
Kilka pytań w każdym arkuszu dotyczy ochrony strony i bazy, licencji oprogramowania, dostępności dla osób z niepełnosprawnościami, pozycjonowania i BHP przy komputerze.
Typowe ataki i obrona
| Atak | Na czym polega | Ochrona |
|---|---|---|
| SQL injection | w polu formularza wpisuje się fragment SQL, np. ' OR '1'='1, który zmienia zapytanie | zapytania przygotowane, mysqli_real_escape_string(), sprawdzanie danych |
| XSS | wstrzyknięcie skryptu JavaScript, który wykona się u innych użytkowników | htmlspecialchars() przy wypisywaniu danych od użytkowników |
| łamanie haseł (brute force, słownikowy) | próbowanie wielu haseł | silne hasła, limit prób, CAPTCHA, dwuetapowe logowanie |
| podsłuch transmisji | przechwycenie danych w sieci | HTTPS (TLS), SFTP zamiast FTP |
| DoS / DDoS | przeciążenie serwera masą żądań | zapora, filtrowanie ruchu |
- Haseł nie zapisuje się w bazie otwartym tekstem, tylko jako skrót (hash): w PHP
password_hash()ipassword_verify(). Funkcjemd5()isha1()są dziś uważane za za słabe do haseł. - Certyfikat SSL/TLS potwierdza tożsamość właściciela witryny i pozwala szyfrować połączenie (HTTPS, kłódka w pasku adresu).
- Ochrona serwera bazy: silne hasła, osobny użytkownik z najmniejszymi potrzebnymi uprawnieniami dla aplikacji, aktualizacje, zapora, kopie zapasowe. Defragmentacja dysku nie ma nic wspólnego z bezpieczeństwem.
Prawo autorskie i licencje
| Licencja | Co wolno |
|---|---|
| freeware | używać za darmo, bez dostępu do kodu i bez zmian |
| shareware | używać za darmo przez okres próbny lub z ograniczeniami, potem trzeba zapłacić |
| trial / demo | wersja próbna z ograniczonym czasem lub funkcjami |
| GNU GPL (open source) | używać, poznawać kod, zmieniać i rozpowszechniać, ale zmienioną wersję też trzeba udostępnić na GPL |
| MIT, BSD | prawie wszystko, także w programach zamkniętych, z zachowaniem informacji o autorze |
| adware | darmowy, ale wyświetla reklamy |
| OEM / BOX | licencja przypisana do komputera / w pudełku, przenośna |
| Creative Commons | dla utworów (zdjęcia, teksty): BY – podaj autora, NC – nie komercyjnie, ND – bez zmian, SA – na tych samych warunkach |
Autorskie prawa osobiste (np. do autorstwa) są bezterminowe i nie można ich przenieść. Prawa majątkowe (do zarabiania na utworze) można sprzedać, wygasają 70 lat po śmierci autora. Z cudzych zdjęć i czcionek na stronie wolno korzystać tylko zgodnie z ich licencją.
Dostępność (WCAG)
- Wytyczne WCAG opisują, jak tworzyć strony dostępne dla osób z niepełnosprawnościami (poziomy A, AA, AAA). Instytucje publiczne w Polsce muszą spełniać WCAG 2.1 na poziomie AA.
- Opisuj obrazy w
alt, używaj nagłówków w kolejności i znaczników semantycznych, zapewnij kontrast tekstu do tła co najmniej 4,5:1 (dla dużego tekstu 3:1), obsługę klawiaturą i podpisy do filmów. - Nie przekazuj informacji wyłącznie kolorem, podpisuj pola formularzy (
<label>).
SEO, czyli pozycjonowanie
SEO to działania, które poprawiają pozycję strony w wynikach wyszukiwarki: trafny <title> i meta description, nagłówki h1–h6 ze słowami kluczowymi, przyjazne adresy, tekst alternatywny obrazów, szybkie ładowanie, wersja mobilna, linki z innych stron. Plik robots.txt mówi robotom, czego nie indeksować, a sitemap.xml wymienia podstrony do zaindeksowania.
BHP przy komputerze
- Górna krawędź ekranu na wysokości oczu lub nieco niżej, odległość 40–75 cm, ekran prostopadle do okna (bez odbić).
- Po każdej godzinie pracy przy monitorze co najmniej 5 minut przerwy wliczanej do czasu pracy.
- Szkolenie okresowe BHP pracowników inżynieryjno-technicznych powtarza się co 5 lat, a na stanowiskach administracyjno-biurowych co 6 lat.
Atak, w którym w pole logowania wpisuje się ' OR '1'='1, to
- XSS
- SQL injection
- DDoS
- phishing
Program można bezpłatnie używać przez 30 dni, potem trzeba go kupić. To licencja
- freeware
- GNU GPL
- public domain
- shareware
Algorytmy, typy danych i systemy liczbowe
Pytania z tej części są ogólne: jak zapisać algorytm, co oblicza podany fragment kodu, jaki typ danych wybrać i jak przeliczać liczby między systemami.
Zapis algorytmu
Algorytm to skończony ciąg kroków prowadzący do rozwiązania. Zapisuje się go listą kroków, pseudokodem albo schematem blokowym:
| Blok | Kształt | Znaczenie |
|---|---|---|
| początek / koniec | owal (elipsa) | start i stop algorytmu |
| operacyjny | prostokąt | obliczenie, przypisanie, np. s ← s + i |
| decyzyjny (warunkowy) | romb | warunek z dwoma wyjściami: TAK / NIE |
| wejścia / wyjścia | równoległobok | wczytanie danych, wypisanie wyniku |
| wywołanie podprogramu | prostokąt z podwójnymi bokami | użycie funkcji |
| łącznik | kółko | połączenie części schematu |
Pętla w schemacie to romb, z którego strzałka wraca do wcześniejszego bloku. Aby znaleźć największą z trzech liczb, wystarczą dwa porównania (dwa bloki decyzyjne).
Jak czytać kod w pytaniu
Gdy pytanie pyta „co oblicza algorytm”, rozpisz w tabelce wartości zmiennych w kolejnych obrotach pętli. Typowe wzorce:
s = 0; for (i = 0; i < n; i++) s += t[i]; // suma elementów; s / n to średnia
s = 0; for (i = 0; i < n; i += 2) s += t[i]; // suma co drugiego elementu (indeksy parzyste)
m = t[0]; for (i = 1; i < n; i++) if (t[i] < m) m = t[i]; // minimum
if (x % 2 == 0) … // liczba parzysta
while (n > 0) { s += n % 10; n = Math.floor(n / 10); } // suma cyfrZłożoność i klasyczne algorytmy
- Złożoność obliczeniowa mówi, jak rośnie liczba operacji z rozmiarem danych n. Szukanie minimum albo przejście tablicy: O(n). Wyszukiwanie binarne w posortowanej tablicy: O(log n). Sortowanie bąbelkowe i przez wybieranie: O(n²). Sortowanie szybkie i przez scalanie: średnio O(n log n).
- Wyszukiwanie liniowe sprawdza elementy po kolei. Binarne (połówkowe) dzieli posortowany zbiór na pół przy każdym kroku.
- Rekurencja to wywołanie funkcji przez samą siebie (np. silnia: n! = n · (n−1)!), musi mieć warunek zakończenia. Iteracja to powtarzanie w pętli.
Typy danych i języki
- Proste: całkowity (int, integer), zmiennoprzecinkowy (float, double, real – liczby z ułamkiem, np. 2.4), logiczny (bool: true/false), znakowy (char) i tekstowy (string).
- Złożone: tablica (elementy tego samego typu z indeksami), tablica asocjacyjna (klucz → wartość), struktura / rekord, klasa / obiekt.
- W programowaniu obiektowym: klasa to wzorzec, obiekt to jej egzemplarz, pola przechowują dane, metody to funkcje klasy. Modyfikatory dostępu:
public(dostęp z zewnątrz),private(tylko w klasie),protected(w klasie i klasach pochodnych). - Kompilator tłumaczy cały program na kod maszynowy przed uruchomieniem (C++, C#). Interpreter wykonuje kod linijka po linijce (PHP, JavaScript, Python).
Systemy liczbowe
| Dziesiętnie | Dwójkowo | Szesnastkowo |
|---|---|---|
| 5 | 101 | 5 |
| 10 | 1010 | A |
| 15 | 1111 | F |
| 16 | 1 0000 | 10 |
| 255 | 1111 1111 | FF |
- Dwójkowy → dziesiętny: dodaj potęgi dwójki tam, gdzie stoi 1. 1011₂ = 8 + 0 + 2 + 1 = 11.
- Dziesiętny → dwójkowy: dziel przez 2 i zapisuj reszty od końca. 13 → 1101₂.
- Dwójkowy ↔ szesnastkowy: każde 4 bity to jedna cyfra szesnastkowa. 1010 1111₂ = AF₁₆.
- System ósemkowy: każde 3 bity to jedna cyfra (0–7).
Bit to 0 lub 1, bajt to 8 bitów i przyjmuje 256 wartości (0–255). 1 KB = 1024 B (ściśle KiB; w układzie SI 1 kB = 1000 B). Kodowanie znaków: ASCII (7 bitów, 128 znaków, bez polskich liter), ISO-8859-2 i Windows-1250 (polskie znaki w 8 bitach), Unicode / UTF-8 (wszystkie alfabety, standard stron WWW).
Ile wynosi dziesiętnie liczba 101011₂?
- 53
- 45
- 43
- 23
Jakim kształtem w schemacie blokowym oznacza się warunek?
- rombem
- prostokątem
- równoległobokiem
- owalem
Jaka jest złożoność obliczeniowa szukania najmniejszego elementu w nieuporządkowanej tablicy n liczb?
- O(1)
- O(n)
- O(n²)
- O(log n)
Egzamin próbny i plan powtórki
Masz za sobą wszystkie działy. Teraz sprawdź się tak, jak na prawdziwym egzaminie: 40 losowych pytań z całej bazy, 60 minut, próg 50%.
Egzamin otworzy się w pełnej bazie pytań INF.03 (ponad 2600 pytań z objaśnieniami). Błędnie rozwiązane pytania trafią tam do zakładki „Do powtórki”.
Jak powtarzać
- Rozwiąż egzamin próbny bez zaglądania do notatek.
- Przy każdym błędzie przeczytaj objaśnienie i wróć do lekcji z tego działu.
- Po kilku dniach przerób zakładkę „Do powtórki”, aż będzie pusta.
- Powtórz egzamin. Celuj w 30+ punktów, a nie w 20, bo na egzaminie dochodzi stres.
Ściąga z najczęstszych pułapek
| Temat | Zapamiętaj |
|---|---|
| marginesy CSS | kolejność: góra, prawo, dół, lewo |
| padding a margin | padding wewnątrz ramki, margin na zewnątrz |
| szerokość bloku | width + 2·padding + 2·border |
| kolor szesnastkowo | para cyfr = pierwsza·16 + druga; FF = 255 |
. i # w CSS | kropka = klasa, krzyżyk = id |
| łączenie tekstów | PHP: kropka, JavaScript: plus |
== i === | === porównuje też typ |
| GET i POST | GET w adresie URL, POST w treści żądania |
| LIKE | % dowolny ciąg, _ jeden znak |
| WHERE i HAVING | WHERE na wierszach, HAVING na grupach |
| DELETE, DROP | DELETE usuwa rekordy, DROP całą tabelę |
| GRANT, REVOKE | GRANT … TO, REVOKE … FROM |
| num_rows, affected_rows | pierwsze po SELECT, drugie po INSERT/UPDATE/DELETE |
| RGB, CMYK | RGB ekran, CMYK druk |
| przezroczystość | PNG (kanał alfa); JPG jej nie ma |
| porty | HTTP 80, HTTPS 443, FTP 21, SSH 22, MySQL 3306 |
| klient i serwer | HTML, CSS, JS w przeglądarce; PHP i SQL na serwerze |