Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 4 maja 2026 23:19
  • Data zakończenia: 4 maja 2026 23:43

Egzamin zdany!

Wynik: 28/40 punktów (70,0%)

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Aby zwiększyć wydajność operacji na bazie danych, należy dla pól, które są często wyszukiwane lub sortowane

A. dodać więzy integralności
B. stworzyć osobną tabelę przechowującą tylko te pola
C. dodać klucz obcy
D. utworzyć indeks
Praca nad dobrą wydajnością baz danych wymaga, żeby zrozumieć, że różne metody optymalizacji mają swoje cele, a działają w różny sposób. Jak dodasz klucz obcy do tabeli, to nie przyspieszysz wyszukiwania czy sortowania danych. Ten klucz ma inne zadanie, na przykład dba o to, żeby każdy rekord w tabeli 'Zamówienia' odnosił się do klienta w tabeli 'Klienci'. To jest ważne, ale nie zwiększy szybkości operacji. Wprowadzenie różnych reguł, jak unikalność czy not null, też nie przyspieszy wyszukiwania, lecz chroni dane przed błędami. Czasami lepiej jest stworzyć osobną tabelę, ale to może skomplikować strukturę bazy danych i wprowadzić więcej kłopotów przy zarządzaniu, zwłaszcza z relacjami między tabelami. Źle przeprowadzona optymalizacja bazy danych może prowadzić do tego, że system będzie wolniejszy przez nadmiarowość. Dlatego ważne jest, żeby dobrze rozumieć różnice między technikami i jak je stosować, żeby osiągnąć najlepsze wyniki w wydajności bazy danych.

Pytanie 2

W CSS zapis selektora

p > i { color: red;} 
wskazuje, że kolorem czerwonym będzie wyróżniony
A. tylko ten tekst znacznika <p>, który ma przypisaną klasę o nazwie i
B. jedynie tekst w znaczniku <i>, który znajduje się bezpośrednio wewnątrz znacznika <p>
C. każdy tekst w znaczniku <p> z wyjątkiem tych w znaczniku <i>
D. wszystkie teksty w znaczniku <p> lub każdy tekst w znaczniku <i>
Odpowiedź ta jest poprawna, ponieważ selektor CSS <pre>p &gt; i { color: red; }</pre> definiuje regułę, która odnosi się jedynie do elementów <i> znajdujących się bezpośrednio wewnątrz elementu <p>. Operator > jest selektorem potomka bezpośredniego, co oznacza, że tylko te <i>, które są bezpośrednio dzieckiem <p>, będą miały przypisany kolor czerwony. Na przykład, jeśli w kodzie HTML mamy <p><i>Tekst</i></p>, to ten tekst będzie czerwony. Z drugiej strony, jeżeli <i> znajduje się zagnieżdżone w innym elemencie wewnątrz <p>, jak <p><span><i>Tekst</i></span></p>, to ten tekst nie będzie formatowany na czerwono. Tego typu selektory są niezwykle przydatne w praktycznym zastosowaniu, gdyż pozwalają na precyzyjne określenie stylów dla konkretnych elementów, co jest zgodne z najlepszymi praktykami projektowania stron internetowych, takimi jak utrzymanie czytelności kodu i unikanie niezamierzonych efektów formatowania.

Pytanie 3

Polecenie colspan służy do łączenia komórek tabeli w poziomie, natomiast rowspan w pionie. Którą z tabel wyświetli poniższy fragment kodu napisany w języku HTML?

<table border="1" cellspacing="0" cellpadding="10">
    <tr>
        <td rowspan="2">&nbsp;</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>&nbsp;</td>
    </tr>
</table>
Ilustracja do pytania
A. A.
B. C.
C. B.
D. D.
Wybrana odpowiedź jest niepoprawna. W pytaniu chodziło o wykorzystanie atrybutów rowspan i colspan w tworzeniu tabel HTML. Atrybuty te służą do łączenia komórek tabeli w pionie i poziomie. W podanym fragmencie kodu HTML widzimy, że pierwsza komórka w pierwszym wierszu ma atrybut rowspan='2', co oznacza, że będzie się rozciągać na dwa wiersze w pionie. Druga komórka w pierwszym wierszu nie ma żadnych specjalnych atrybutów, zatem jest standardową komórką. W drugim wierszu jest tylko jedna komórka, gdyż druga komórka jest połączona z pierwszą komórką pierwszego wiersza przez atrybut rowspan. Opis odpowiada tabeli B, która ma jedną długą komórkę po lewej stronie rozciągającą się na dwa wiersze oraz dwie krótsze komórki po prawej stronie, po jednej w każdym wierszu. Pamiętaj, iż nieprawidłowe użycie atrybutów rowspan i colspan może prowadzić do niezamierzonych rezultatów, takich jak krzywe linie tabeli czy brakujące komórki.

Pytanie 4

Co można powiedzieć o stylu hiperłącza na podstawie opisu CSS, zakładając, że żadne inne style nie zostały zdefiniowane?

a:link {
  color: green;
  text-decoration: none;
}

a:hover {
  color: red;
  text-decoration: underline;
}
A. Gdy kursor znajdzie się na obszarze hiperłącza, pojawia się podkreślenie i tekst przyjmuje kolor czerwony.
B. Gdy hiperłącze jest nieodwiedzone, jego tekst jest koloru niebieskiego z podkreśleniem.
C. Tekst odwiedzonego hiperłącza jest koloru czerwonego.
D. Hiperłącze jest zawsze podkreślone.
Twoja odpowiedź jest poprawna. W przypadku hiperłącza, w momencie, gdy kursor znajduje się na obszarze hiperłącza, pojawia się podkreślenie i tekst przyjmuje kolor czerwony. Jest to efekt zastosowania stylu CSS w stanie 'hover'. Styl ten umożliwia dynamiczną zmianę wyglądu elementu, kiedy kursor myszy znajduje się nad nim. Jest to praktyka powszechnie stosowana w celu zwiększenia użyteczności i interaktywności stron internetowych. Dobrą praktyką jest również zapewnienie kontrastu między kolorem tła a tekstem dla lepszej czytelności. W tym przypadku, kolor tekstu zmienia się na czerwony, co zapewnia wyraźny kontrast i zwraca uwagę użytkownika. Równocześnie dodanie podkreślenia jest dodatkowym wizualnym wskaźnikiem, że dany element jest hiperłączem. Zastosowanie takiego stylu pozwala na intuicyjne i efektywne poruszanie się po stronie internetowej.

Pytanie 5

Emblemat systemu CMS o nazwie Joomla! to

Ilustracja do pytania
A. D.
B. A.
C. B.
D. C.
Logo systemu CMS Joomla! składa się z czterech kolorowych elementów ułożonych w ciekawy wzór, który od razu zwraca uwagę. Moim zdaniem, ten design dobrze oddaje ideę Joomla!, bo podkreśla współpracę i wspólnotę. To jeden z najpopularniejszych systemów do zarządzania treścią na świecie, a ludzie go używają do różnych rzeczy – od prostych blogów po naprawdę rozbudowane portale korporacyjne. Dzięki fajnym rozszerzeniom i szablonom można na prawdę spersonalizować swoją stronę. Co ważne, Joomla! wspiera dobre praktyki SEO, więc jest super opcją dla deweloperów, którzy chcą, żeby ich strony były dobrze widoczne w sieci. Widziałem, że to logo często pojawia się na stronach jako znak jakości, co pokazuje, jak bardzo jest rozpoznawalne i ważne w branży. Wybór tego logo jest więc trafiony i daje dobry punkt wyjścia do nauki o CMS-ach i ich zastosowaniach w realnym świecie.

Pytanie 6

Jakie zadania programistyczne należy realizować po stronie serwera?

A. Ukrywanie oraz odkrywanie elementów strony w zależności od bieżącej pozycji kursora
B. Walidacja danych wpisanych w pole tekstowe w czasie rzeczywistym
C. Zapisanie danych pobranych z aplikacji internetowej do bazy danych
D. Zmiana stylu HTML na stronie spowodowana ruchem kursora
Zapis danych z aplikacji internetowej w bazie to super ważna sprawa. Ogólnie mówiąc, to serwer się tym zajmuje. To on trzyma i zarządza informacjami, które wysyłamy, jak się rejestrujemy czy wypełniamy jakieś formularze. Kiedy użytkownik coś wpisuje, te dane muszą lecieć do serwera, gdzie są przetwarzane i lądować w bazie danych. Przykładowo, w relacyjnych bazach danych, jak MySQL czy PostgreSQL, używa się zapytań SQL do zarządzania tymi danymi, co ułatwia ich późniejsze szukanie. Warto też pamiętać o bezpieczeństwie – serwer musi robić walidację danych, żeby nie dać się nabrać na ataki typu SQL Injection. No i architektura MVC świetnie pokazuje, jak ważne jest miejsce serwera dla danych. Zapis danych to po prostu kluczowy element w działaniu aplikacji webowych.

Pytanie 7

Jakie imiona spełniają warunek klauzuli LIKE w zapytaniu

SELECT imie FROM mieszkancy WHERE imie LIKE 'o_%_a';
?
A. Oksana, Ola, Olga
B. Oksana, Oktawia, Olga
C. Oktawia, Oktawian, Olga
D. Oda, Oksana, Oktawia
Odpowiedź Oksana, Oktawia, Olga jest poprawna, ponieważ wszystkie te imiona spełniają warunki klauzuli LIKE w zapytaniu SQL. Klauzula LIKE 'o_%_a' wskazuje na to, że imię musi zaczynać się na literę 'o', mieć co najmniej jeden dowolny znak po 'o' (reprezentowany przez znak podkreślenia '_'), a następnie musi kończyć się na literę 'a'. Przykłady imion: Oksana zaczyna się na 'O', ma 'ks' jako drugi znak i kończy się na 'a'; Oktawia również dostosowuje się do tego wzoru, zaś Olga zaczyna się na 'O', ma 'lg' jako drugi i trzeci znak oraz kończy na 'a'. W praktyce, umiejętność korzystania z klauzuli LIKE jest kluczowa w SQL przy wyszukiwaniu danych według wzorców, co pozwala na bardziej elastyczne i precyzyjne zapytania. Poprawne użycie LIKE zwiększa efektywność filtrowania danych, co jest istotnym aspektem w zarządzaniu bazami danych oraz analizie danych, zgodnie z najlepszymi praktykami w branży.

Pytanie 8

W CSS zapis w postaci ```h1::first-letter{color:red;}``` spowoduje, że kolor czerwony będzie dotyczył

A. tekstów nagłówka pierwszego poziomu
B. pierwszej litery nagłówka drugiego poziomu
C. pierwszej linii akapitu
D. pierwszej litery nagłówka pierwszego poziomu
Zapis CSS h1::first-letter {color: red;} odnosi się do selektora pseudo-elementu first-letter, który jest używany do stylizacji pierwszej litery bloku tekstowego w nagłówkach. W tym wypadku, gdy selektor jest zastosowany do elementu h1, oznacza to, że kolor pierwszej litery nagłówka pierwszego stopnia (h1) zostanie zmieniony na czerwony. Pseudo-element first-letter działa tylko dla elementów blokowych, takich jak nagłówki, akapity czy listy. W praktyce, jeśli w dokumencie HTML mamy element <h1> z tekstem, np. 'Witaj świecie', to wyłącznie litera 'W' zostanie wyświetlona w kolorze czerwonym. To podejście jest zgodne ze standardami CSS, które definiują pseudo-elementy jako specyficzne fragmenty dokumentu, które można stylizować niezależnie od reszty zawartości. Warto również zauważyć, że stosowanie takich selektorów pozwala na uzyskanie bardziej złożonych efektów wizualnych bez konieczności modyfikacji struktury HTML. Umożliwia to projektantom stron internetowych większą elastyczność i kontrolę nad estetyką treści.

Pytanie 9

W języku SQL dodanie nowej kolumny z nazwą miejscowości do istniejącej tabeli pracownicy umożliwia kwerenda

A. ALTER TABLE pracownicy DROP COLUMN miejscowosc;
B. ALTER TABLE pracownicy ADD miejscowosc FLOAT(2);
C. ALTER TABLE pracownicy ADD miejscowosc VARCHAR(100);
D. CREATE TABLE pracownicy ADD miejscowosc FLOAT(2);
Żeby dobrze zrozumieć to zadanie, trzeba rozdzielić trzy różne obszary: modyfikację istniejącej tabeli, tworzenie nowej tabeli oraz usuwanie elementów z tabeli. W pytaniu chodzi konkretnie o dodanie nowej kolumny do już istniejącej tabeli pracownicy. To od razu sugeruje użycie instrukcji ALTER TABLE z klauzulą ADD, bo właśnie ta kombinacja jest standardowym sposobem modyfikowania struktury tabeli w SQL. Jednym z częstych nieporozumień jest użycie nieodpowiedniego typu danych. W niektórych odpowiedziach pojawia się typ FLOAT(2) dla nazwy miejscowości. FLOAT jest typem liczbowym zmiennoprzecinkowym, używanym do przechowywania wartości numerycznych, np. cen, pomiarów czy wyników obliczeń. Nazwa miasta to typowe dane tekstowe, czyli powinna być przechowywana w typie znakowym, takim jak VARCHAR czy ewentualnie CHAR. Próba użycia typu liczbowego do przechowywania tekstu jest po prostu sprzeczna z logiką projektowania baz danych i dobrymi praktykami normalizacji, bo utrudnia walidację i późniejsze operacje na danych. Inny błąd to sięganie po instrukcję DROP COLUMN. DROP w kontekście ALTER TABLE oznacza usunięcie kolumny z tabeli, a nie jej dodanie. Jeśli ktoś nieuważnie czyta polecenie lub myli słowa kluczowe, może mu się wydawać, że DROP „coś zmienia w strukturze”, ale kierunek jest dokładnie odwrotny do wymaganego – kolumna miejscowosc zostałaby usunięta (o ile w ogóle istnieje), a nie dodana. W praktyce administracji bazą jest to bardzo niebezpieczna pomyłka, bo DROP COLUMN usuwa dane bezpowrotnie. Zdarza się też pomylenie CREATE TABLE z ALTER TABLE. CREATE TABLE służy do zakładania całkowicie nowej tabeli, a nie do modyfikacji istniejącej. Składnia CREATE TABLE nie przewiduje klauzuli ADD w środku, tylko od razu listę kolumn w nawiasach. Próba napisania czegoś w stylu CREATE TABLE pracownicy ADD ... jest po prostu składniowo błędna w SQL i żadna sensowna baza nie przyjmie takiego polecenia. To typowy błąd osób, które pamiętają, że „ADD dodaje kolumnę”, ale nie łączą tego poprawnie z kontekstem ALTER TABLE. Z mojego doświadczenia dobrą praktyką jest zawsze zadanie sobie dwóch pytań: czy tabela już istnieje, oraz czy chcę coś dodać, usunąć czy zmienić. Jeśli tabela istnieje i coś dokładamy – używamy ALTER TABLE ... ADD ..., dobierając typ danych zgodny z charakterem informacji. W tym zadaniu wszystkie błędne odpowiedzi łamią jedną z tych zasad: albo używają złego typu (FLOAT zamiast tekstu), albo złego słowa kluczowego (DROP zamiast ADD), albo złej instrukcji (CREATE TABLE zamiast ALTER TABLE).

Pytanie 10

Jakie znaczniki należy zastosować, aby umieścić kod PHP w pliku z rozszerzeniem php?

A. <?php .......... ?>
B. <php .......... />
C. <php> ......... </php>
D. <?php> ........ <php?>
Odpowiedź <?php .......... ?> jest poprawna, ponieważ jest to standardowy sposób wstawiania kodu PHP do plików z rozszerzeniem .php. Znaczniki te pozwalają interpreterowi PHP rozpoznać, że zawarty w nich kod powinien być przetworzony przez silnik PHP, a nie przez przeglądarkę jako HTML. W praktyce, użycie tych znaczników umożliwia twórcom aplikacji webowych dynamiczne generowanie treści, operowanie na danych wejściowych oraz integrację z bazami danych. Przykład zastosowania może obejmować skrypty do przetwarzania formularzy, generowania stron internetowych w zależności od warunków lub wyświetlania danych z bazy danych. Standardowe znaczniki <?php ?> są również zalecane w dokumentacji PHP jako najlepsza praktyka, co zapewnia większą kompatybilność i zrozumiałość kodu, a także minimalizuje ryzyko błędów związanych z interpretacją kodu przez serwer. Warto również pamiętać, że znaczniki te powinny być stosowane z zachowaniem odpowiednich zasad formatowania, aby kod był czytelny i łatwy do utrzymania.

Pytanie 11

Który z poniższych fragmentów kodu HTML5 zostanie uznany za niepoprawny przez walidator HTML?

A. <pre>&lt;p class= &quot;stl&quot;&gt;tekst&lt;/p&gt;</pre>
B. <pre>&lt;p class= &quot;stl&quot; style= &quot;color: #F00 &quot;&gt;tekst&lt;/p&gt;</pre>
C. <pre>&lt;p class= &quot;stl&quot; id= &quot;a&quot;&gt;tekst&lt;/p&gt;</pre>
D. <pre>&lt;p class= &quot;stl&quot;&gt;&lt;style&gt;.a{color:#F00}&lt;/style&gt;tekst&lt;/p&gt;</pre>
Odpowiedź, która została wskazana jako błędna, jest przykładem kodu HTML5, który nie spełnia standardów walidacji, ponieważ zawiera tag &lt;style&gt; wewnątrz tagu &lt;p&gt;. Zgodnie z wytycznymi HTML, tag &lt;style&gt; powinien znajdować się w sekcji &lt;head&gt; dokumentu, a nie w treści. Wstawianie stylów CSS bezpośrednio w treści elementu blokowego jest niepraktyczne i niezgodne z dobrymi praktykami, które zalecają separację treści od prezentacji. Dobrą praktyką jest stosowanie arkuszy stylów CSS do zewnętrznego formatowania dokumentów, aby zwiększyć ich dostępność i ułatwić późniejsze modyfikacje. Przykładowo, zamiast używać tagu &lt;style&gt; wewnątrz &lt;p&gt;, należy zdefiniować style w sekcji &lt;head&gt; lub w zewnętrznym pliku CSS, a następnie odwołać się do tych klas w treści dokumentu. W ten sposób utrzymujemy porządek w kodzie i zapewniamy, że będzie on zgodny z zaleceniami W3C, co przekłada się na lepszą kompatybilność z przeglądarkami i urządzeniami. Zatem, poprawne podejście polega na unikalnym zarządzaniu stylami oraz treściami, co jest kluczowe dla efektywnego tworzenia stron internetowych.

Pytanie 12

Posiadając tabelę zawierającą zwierzeta z kolumnami nazwa, gatunek, gromada, cechy, dlugosc_zycia, aby uzyskać listę nazw zwierząt, które żyją co najmniej 20 lat oraz należą do ssaków, należy wykonać zapytanie:

A. SELECT nazwa FROM zwierzeta WHERE gromada = 'ssak';
B. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >= 20 OR gromada = 'ssak';
C. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >= 20;
D. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >= 20 AND gromada = 'ssak';
Zapytanie SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >=20 AND gromada = 'ssak'; jest prawidłowe, ponieważ łączy dwa kluczowe warunki, które muszą być spełnione, aby uzyskać pożądane wyniki. W tym przypadku chcemy wyświetlić nazwy zwierząt, które żyją co najmniej 20 lat oraz należą do gromady ssaków. Operator AND w SQL jest stosowany do łączenia warunków, co oznacza, że tylko te rekordy, które spełniają oba warunki, zostaną zwrócone. Przykładem zastosowania takiego zapytania może być analiza danych w zoologii lub biologii, gdzie istotne jest zrozumienie, które gatunki mają długowieczność i są ssakami. Takie zapytanie można również wykorzystać w praktyce, na przykład w aplikacjach ewidencjonujących zwierzęta w ogrodach zoologicznych czy rezerwatach, pomagając w podejmowaniu decyzji o ich ochronie lub hodowli. Zastosowanie dobrych praktyk w SQL polega na precyzyjnym definiowaniu kryteriów, co pozwala na efektywne przetwarzanie i analizowanie danych.

Pytanie 13

Tabele: Studenci, Zapisy, Zajecia są powiązane relacją. Aby wybrać jedynie nazwiska studentów oraz odpowiadające im idZajecia dla studentów z grupy 15, należy wydać kwerendę

Ilustracja do pytania
A. SELECT nazwisko, idZajecia FROM Studenci INNER JOIN Zapisy ON Studenci.id = Zapisy.idStudenta;
B. SELECT nazwisko, idZajecia FROM Studenci JOIN Zapisy ON Studenci.id = Zapisy.idZajecia WHERE grupa = 15;
C. SELECT nazwisko, idZajecia FROM Studenci INNER JOIN Zapisy WHERE grupa= 15;
D. SELECT nazwisko, idZajecia FROM Studenci JOIN Zapisy ON Studenci.id = Zapisy.idStudenta WHERE grupa = 15;
Pierwszym istotnym problemem w niepoprawnych zapytaniach jest brak prawidłowego połączenia tabel na właściwych kluczach. W relacyjnych bazach danych, aby sensownie połączyć dane z różnych tabel, należy wykorzystać klucze główne i obce, które jasno definiują powiązania między obiektami. Jeśli zapomni się o warunku JOIN albo połączy się tabele po błędnych kolumnach (na przykład próbując połączyć idStudenta z idZajecia lub pomijając warunek ON), baza zwróci błędne wyniki lub wręcz nie pozwoli wykonać zapytania. To typowy błąd początkujących, którzy nie zawsze rozumieją, jak bardzo ważne jest precyzyjne określenie relacji – w rzeczywistych bazach danych relacji jest wiele, a niewłaściwe powiązanie może prowadzić do powstawania kartuzjańskiego iloczynu, czyli powielania danych bez rzeczywistego sensu. Brak filtru WHERE grupa = 15 skutkuje wyciągnięciem danych dla wszystkich studentów, co może być ogromnym problemem przy dużych bazach i całkowicie rozmija się z celem kwerendy. Moim zdaniem, wiele osób zapomina, że filtrowanie to podstawa – bez tego, szczególnie przy produkcyjnych bazach, można zarówno błędnie interpretować wyniki, jak i mocno przeciążyć system niepotrzebnym ruchem. Takie błędy wynikają często z braku systematycznego podejścia do projektowania zapytań i nieuważnego czytania struktury tabel. Warto od razu przyzwyczajać się do pracy zgodnie z konwencjami, bo to przekłada się na bezpieczeństwo, wydajność i poprawność działania całego systemu. W praktyce – nawet drobny błąd w składni JOIN lub brak filtrowania na kluczowej kolumnie może wywołać lawinę problemów, zwłaszcza gdy kwerenda staje się częścią większej aplikacji biznesowej lub raportu dla zarządu.

Pytanie 14

Utworzono bazę danych zawierającą tabelę podzespoły, która składa się z pól: model, producent, typ, cena. Aby uzyskać listę wszystkich modeli pamięci RAM od firmy Kingston uporządkowaną według ceny, zaczynając od najniższej, należy wykorzystać zapytanie:

A. SELECT model FROM podzespoly WHERE typ="RAM" OR producent="Kingston" ORDER BY cena DESC
B. SELECT model FROM producent WHERE typ="RAM" OR producent="Kingston" ORDER BY podzespoly ASC
C. SELECT model FROM podzespoly WHERE typ="RAM" AND producent="Kingston" ORDER BY cena DESC
D. SELECT model FROM podzespoly WHERE typ="RAM" AND producent="Kingston" ORDER BY cena ASC
Niepoprawne odpowiedzi bazują na zrozumieniu logiki zapytań SQL, ale zawierają istotne błędy w składni i koncepcji dzielenia danych. W pierwszej opcji, użycie operatora OR w klauzuli WHERE prowadzi do wyników, które mogą obejmować modele innych typów pamięci, ponieważ filtruje dane na podstawie jednego z dwóch warunków, co jest sprzeczne z zamiarem uzyskania precyzyjnych wyników tylko dla pamięci RAM od producenta Kingston. Taki błąd w myśleniu może wynikać z mylnego przekonania, że użycie operatora OR zawsze jest lepsze dla zwiększenia ilości danych, co w rzeczywistości prowadzi do zafałszowania wyników. W drugiej odpowiedzi, mimo że użycie operatora AND jest poprawne, sortowanie wyników w kolejności malejącej (ORDER BY cena DESC) nie odpowiada wymaganiu wyświetlenia najtańszej pamięci jako pierwszej, co też czyni tę odpowiedź niewłaściwą. Ostatnia opcja błędnie odnosi się do tabeli 'producent', co jest oczywistym naruszeniem zasad normalizacji bazy danych, ponieważ zapytanie powinno odnosić się do tabeli 'podzespoly', gdzie znajdują się odpowiednie dane. Tego rodzaju błędy mogą prowadzić do nieefektywnego wykorzystania zapytań SQL, co w praktyce będzie skutkować nieprawidłowymi wynikami w aplikacjach opartych na bazach danych, co obniża jakość i wydajność aplikacji. Zrozumienie tych koncepcji jest kluczowe dla prawidłowego stosowania SQL w codziennych zastosowaniach związanych z zarządzaniem danymi.

Pytanie 15

Jaką treść komunikatu należy umieścić w kodzie PHP zamiast znaków zapytania?

$a = mysql_connect('localhost', 'adam', 'mojeHaslo');

if (!$a)
    echo "?????????????";
A. Błąd w trakcie przetwarzania zapytania SQL
B. Wybrana baza danych nie istnieje
C. Błąd połączenia z serwerem SQL
D. Rekord został pomyślnie dodany do bazy
Poprawna odpowiedź 'Błąd połączenia z serwerem SQL' jest właściwa, ponieważ funkcja mysql_connect() służy do nawiązywania połączenia z serwerem bazy danych MySQL. Jeśli połączenie nie powiedzie się, zwraca false. W takiej sytuacji należy poinformować użytkownika o nieudanym połączeniu. Jest to kluczowe w debugowaniu i zapewnianiu użytkownikowi zrozumiałych komunikatów błędów. W praktyce, połączenie z bazą danych jest podstawowym krokiem w wielu aplikacjach internetowych, a jego poprawna obsługa to standardowa praktyka branżowa. Współczesne podejście wymaga także użycia rozszerzenia mysqli lub PDO zamiast przestarzałej funkcji mysql_connect(). Jest to zalecane ze względu na lepsze wsparcie bezpieczeństwa i wydajności. Użycie funkcji mysqli_connect() pozwala na obsługę zarówno błędów połączenia, jak i zapytań SQL w sposób bardziej elastyczny i bezpieczny.

Pytanie 16

Zapis CSS w postaci: ```ul{ list-style-image:url('rys.gif');}``` spowoduje, że na stronie internetowej

A. rysunek rys.gif zostanie wyświetlony jako punkt listy nienumerowanej
B. każdy element listy zyska indywidualne tło pochodzące z grafiki rys.gif
C. punktorem nienumerowanej listy stanie się rys.gif
D. rys.gif będzie służyć jako tło dla nienumerowanej listy
W CSS właściwość 'list-style-image' służy do określenia obrazu, który ma być użyty jako znacznik punktu dla list nienumerowanych. W podanym przykładzie zapis 'ul{ list-style-image:url('rys.gif'); }' informuje przeglądarkę, aby zamiast domyślnego punktu, wykorzystała obrazek 'rys.gif'. Oznacza to, że każdy element listy (li) w tej nienumerowanej liście będzie miał przypisany obraz jako punkt. To podejście jest zgodne ze standardami CSS i jest szeroko stosowane w celu dodania indywidualnego stylu do elementów listy. Przykładowo, zamiast tradycyjnego kropkowania, możemy użyć ikon lub obrazów, które lepiej oddają tematykę strony. Ważne jest, aby plik graficzny był dostępny i poprawnie załadowany, co zapewni, że znacznik wyświetli się na stronie. Istotne jest również, aby pamiętać o optymalizacji obrazków dla sieci, co może poprawić szybkość ładowania strony.

Pytanie 17

Aby móc edytować nałożone na siebie poszczególne części obrazu, zachowując inne elementy w niezmienionej formie, należy użyć

A. warstwy
B. kanału alfa
C. histogramu
D. kadrowania
Aby efektywnie edytować nakładające się na siebie fragmenty obrazu, najlepiej jest zastosować warstwy. Warstwy w programach graficznych, takich jak Adobe Photoshop, pozwalają na niezależne manipulowanie różnymi elementami obrazu, co daje ogromne możliwości w zakresie edycji. Dzięki zastosowaniu warstw, możesz dodawać, modyfikować lub usuwać poszczególne fragmenty bez wpływu na inne elementy kompozycji. Na przykład, jeśli chcesz zmienić kolor tylko jednego obiektu na obrazie, wystarczy, że wybierzesz odpowiednią warstwę i zastosujesz na niej odpowiednie filtry lub narzędzia. Warstwy umożliwiają również korzystanie z kanałów alfa, co pozwala na precyzyjne zarządzanie przezroczystością i maskowaniem. W standardach edycji graficznej, użycie warstw stało się normą, ponieważ pozwala to na większą elastyczność i kontrolę nad finalnym efektem wizualnym. Przykładowo, w projektach skomplikowanych grafik, takich jak plakaty czy infografiki, korzystanie z warstw jest kluczowe dla zachowania porządku i efektywności pracy.

Pytanie 18

Kod przedstawiony poniżej został napisany w języku JavaScript. W zdefiniowanym obiekcie metoda to element o nazwie

 var obj1 = {
    czescUlamkowa: 10,
    czescCalkowita: 20,
    oblicz: function () { ... }
}
A. obj1
B. oblicz
C. czescCalkowita
D. czescUlamkowa
Odpowiedź 'oblicz' jest poprawna, ponieważ w przedstawionym kodzie JavaScript to właśnie ta właściwość jest metodą obiektu 'obj1'. Metoda to funkcja zdefiniowana w kontekście obiektu, która może operować na danych przechowywanych w tym obiekcie. W tym przypadku, 'oblicz' definiuje funkcję, której szczegóły nie zostały pokazane (zaznaczone jako '…'), ale można domyślić się, że jej zadaniem jest wykonanie pewnych operacji na wartościach 'czescUlamkowa' i 'czescCalkowita'. Praktyczne zastosowanie metod obiektowych polega na umożliwieniu organizacji kodu w sposób, który łączy dane i operacje na tych danych, co jest zgodne z zasadami programowania obiektowego. Dzięki temu kod staje się bardziej czytelny, łatwiejszy w utrzymaniu i rozwoju. Dobre praktyki w JavaScript podkreślają znaczenie metod w obiektach, co pozwala na lepsze modelowanie rzeczywistych problemów, jak na przykład obliczanie wartości matematycznych w aplikacjach webowych, gdzie metody obiektowe zapewniają modularność i reusability kodu.

Pytanie 19

Który z poniższych wpisów w dokumencie HTML umożliwia połączenie z zewnętrznym arkuszem stylów o nazwie style.css?

A. <a href="/style.css">
B. <link rel="stylesheet' src="/style.css">
C. <link rel="stylesheet" href="/style.css">
D. <a src="/style.css">
Pomyłka w wyborze odpowiedzi może wynikać z tego, że nie do końca rozumiesz, jak działa struktura dokumentu HTML i jakie role mają różne tagi oraz atrybuty. Na przykład, zapis <link rel="stylesheet' src="/style.css"> to zła droga, bo atrybut src tu nie pasuje. Powinno być href, a nie src. A tag <a>? To jest do robienia linków, a nie do dodawania arkuszy stylów. Jak dodasz <a href="/style.css">, to nie wczytasz stylów – to tylko link do pliku CSS, więc nic się nie zadzieje. Ostatnia opcja, czyli <a src="/style.css">, to już totalna katastrofa, bo tag <a> w ogóle nie ma atrybutu src. Te błędy pokazują, że nie do końca rozumiesz, że to <link> powinno być używane z atrybutem href do dołączania arkuszy stylów. Zrozumienie tych różnic jest kluczowe, bo pomoże Ci dobrze budować strony i ogarniać projekty webowe w przyszłości.

Pytanie 20

Jaką instrukcję algorytmu ilustruje graficzna prezentacja bloku na zamieszczonym rysunku?

Ilustracja do pytania
A. Wypisz n
B. Wykonaj podprogram sortowania tablicy t
C. n > 20
D. n ← n + 5
Każda z niepoprawnych odpowiedzi wynika z błędnego rozpoznania typów bloków w diagramach przepływu. Instrukcje przypisania, takie jak n ← n + 5, są reprezentowane prostokątem i oznaczają operacje przetwarzania danych, gdzie zmienna jest modyfikowana zgodnie z określoną logiką. Ta operacja głównie pojawia się w kontekście pętli lub jako część większej sekwencji działań obliczeniowych, co jest użyteczne w algorytmach obliczeniowych i matematycznych, gdzie często modyfikujemy wartość zmiennych. Kolejny typ instrukcji, taki jak Wypisz n, jest reprezentowany przez blok wyjścia, który jest używany do komunikacji wyników algorytmu na zewnątrz. Jest to częste w raportowaniu lub debugowaniu programów, gdzie wynikiem działania algorytmu jest wyświetlenie informacji użytkownikowi. Podprogramy, takie jak sortowanie tablicy, oznaczają bloki procesów, które są reprezentowane prostokątem z podwójnymi liniami bocznymi i wskazują na wywołanie funkcji lub procedury. Takie konstrukcje są kluczowe w strukturalnym programowaniu, gdzie zadania są dekomponowane na mniejsze, zarządzalne jednostki, co prowadzi do lepszego zrozumienia i utrzymania kodu. Błędne rozpoznanie tych bloków prowadzi do nieprawidłowego zrozumienia struktury algorytmu, co może skutkować jego nieefektywnością lub błędami logicznymi w jego działaniu. Zrozumienie różnic między tymi blokami jest niezbędne do prawidłowego projektowania i implementacji algorytmów, co jest podstawą w wielu dziedzinach informatyki, takich jak inżynieria oprogramowania czy analiza danych. Dzięki temu można tworzyć efektywne i zrozumiałe rozwiązania, które spełniają wymagania użytkowników i normy branżowe.

Pytanie 21

W programie Microsoft Access mechanizmem ochrony danych związanym z tabelą i kwerendą jest

A. przypisanie uprawnień
B. wykorzystanie makr
C. określanie zakresu tabel
D. ustalanie limitów przestrzeni na dysku
Przypisanie uprawnień jest kluczowym elementem zarządzania bezpieczeństwem w Microsoft Access, ponieważ pozwala na kontrolowanie, kto ma dostęp do danych w tabelach i kwerendach. W praktyce, administratorzy baz danych mogą definiować, które grupy użytkowników mogą przeglądać, edytować lub usuwać dane. To podejście jest zgodne z zasadą najmniejszych uprawnień, co oznacza, że użytkownicy otrzymują tylko te uprawnienia, które są im niezbędne do wykonywania swoich zadań. Na przykład, jeśli pracownik potrzebuje jedynie przeglądać dane w konkretnej tabeli, administrator może przyznać mu jedynie uprawnienia do odczytu, co minimalizuje ryzyko nieautoryzowanych zmian. Warto także wspomnieć, że przypisanie uprawnień nie ogranicza się tylko do tabel, ale dotyczy również kwerend, formularzy i raportów, co pozwala na szczegółowe zarządzanie dostępem do różnych zasobów systemu. Dobre praktyki w zakresie bezpieczeństwa baz danych zalecają regularne audyty uprawnień, aby upewnić się, że są one nadal odpowiednie do zmieniających się potrzeb organizacji oraz roli użytkowników.

Pytanie 22

W stylu CSS ustalono obramowanie pojedyncze, które ma następujące kolory dla krawędzi:

border: solid 1px; border-color: red blue green yellow;
A. prawa – czerwona, dolna – niebieska, lewa – zielona, górna – żółta
B. górna – czerwona, lewa – niebieska, dolna – zielona, prawa – żółta
C. górna – czerwona, prawa – niebieska, dolna – zielona, lewa – żółta
D. lewa – czerwona, dolna – niebieska, prawa – zielona, górna – żółta
Definicja obramowania za pomocą stylu CSS z użyciem właściwości border-color pozwala na określenie kolorów każdej z krawędzi elementu w kolejności zgodnej ze wskazówkami zegara. Gdy podano cztery wartości jak w border-color: red blue green yellow; oznaczają one odpowiednio kolory krawędzi górnej prawej dolnej i lewej. Właściwość border: solid 1px; definiuje typ obramowania jako solidne i jego szerokość jako 1px. Warto zaznaczyć że podanie czterech wartości kolorów w border-color jest zgodne z zasadami CSS i umożliwia konfigurowanie wyglądu elementów w sposób szczegółowy i zindywidualizowany. Projektanci stron internetowych często używają tej techniki do tworzenia graficznych stylów które zwiększają czytelność i estetykę witryny. W praktyce wiedza o manipulacji stylem obramowania w CSS jest kluczowa dla tworzenia responsywnych i wizualnie atrakcyjnych interfejsów użytkownika. Takie podejście wspiera zachowanie spójności wizualnej co jest jedną z dobrych praktyk w projektowaniu front-endu.

Pytanie 23

Podano fragment kodu PHP, w którym znajduje się zadeklarowana zmienna typu tablica. Jakie imię zostanie wyświetlone po wykonaniu tego kodu?

Ilustracja do pytania
A. Krzysztof
B. Anna
C. Tomasz
D. Aleksandra
W prezentowanym kodzie PHP mamy do czynienia z tablicą indeksowaną. Tablica ta zawiera cztery elementy: 'Anna' 'Tomasz' 'Krzysztof' i 'Aleksandra'. W PHP tablice indeksowane są zerowane czyli pierwszy element znajduje się pod indeksem 0 drugi pod indeksem 1 i tak dalej. Dlatego jeśli chcemy uzyskać dostęp do trzeciego elementu tablicy musimy odwołać się do indeksu 2. W związku z tym wyrażenie echo $imiona[2] wypisze wartość 'Krzysztof'. Zrozumienie indeksowania tablic w PHP jest kluczowe zwłaszcza przy operacjach na dużych zbiorach danych. Poprawna praktyka programistyczna polega na dokładnym śledzeniu indeksów aby uniknąć błędów typu 'index out of range'. Warto również zwrócić uwagę na alternatywne sposoby deklaracji tablic w PHP np. za pomocą skróconej notacji [] co jest preferowane w nowszych wersjach PHP ze względu na czytelność i zwięzłość kodu. Takie podejście zgodne jest z dobrymi praktykami w programowaniu obiektowym oraz w przypadku tworzenia API gdzie struktury danych są często wykorzystywane w podobny sposób.

Pytanie 24

Skrypt PHP wyświetla aktualny czas w formacie godzina:minuta:sekunda, na przykład 15:38:20. Czas w tym formacie zostanie uzyskany dzięki funkcji

A. time("H:i:s");
B. date("H:i:s");
C. date("G:m:s");
D. time("G:m:s");
Funkcja date() w PHP jest używana do formatowania daty i czasu w różnych formatach. W przypadku wywołania date("H:i:s"), składa się ona z trzech elementów: 'H' reprezentuje godziny w 24-godzinnym formacie, 'i' to minuty, a 's' to sekundy. Dzięki takiemu formatowaniu, wynik będzie przedstawiał aktualny czas w formacie godzina:minuta:sekunda, co jest powszechnie używane w aplikacjach webowych do wyświetlania czasu. Na przykład, wywołując echo date("H:i:s"); w skrypcie PHP, użytkownik zobaczy aktualny czas na stronie internetowej. Warto również zauważyć, że korzystanie z funkcji date() jest zgodne z najlepszymi praktykami w programowaniu PHP, ponieważ pozwala na łatwe dostosowanie formatu czasu do potrzeb aplikacji i użytkowników. Dodatkowo, przy wdrażaniu systemów, które wymagają precyzyjnego czasu, warto również rozważyć strefy czasowe, co można osiągnąć za pomocą funkcji date_default_timezone_set().

Pytanie 25

1       <script>
2       const liczba = 1;
3       let gora = 10, dol = 1;
4       let podaj = parseInt(prompt("Podaj liczbę całkowitą z zakresu <1-10>"));
5       liczba = Math.random() * ( gora - dol + 1 ) + dol;
6       liczba = parseInt(liczba);
7       if (liczba == podaj) {
8           document.write("Liczba została odgadnięta");
9       } else {
10          document.write("Niestety nie tym razem");
11      }
12      </script>
Przedstawiony fragment kodu JavaScript powinien wylosować liczbę całkowitą z zakresu <1 , 10> i porównać ją z liczbą podaną przez użytkownika w oknie dialogowym. Skrypt po uruchomieniu generuje błąd, którego przyczyną jest
A. błędna składnia deklaracji zmiennych gora i dol w drugiej linii skryptu.
B. niepotrzebne użycie konwersji z funkcji prompt do liczby całkowitej.
C. błędna składnia instrukcji warunkowej if ... else.
D. przypisanie wartości do stałej liczba w piątej linii skryptu .
W tym zadaniu łatwo skupić się na szczegółach, które wyglądają podejrzanie, ale w rzeczywistości są poprawne. Wiele osób patrzy najpierw na deklarację zmiennych `gora` i `dol` w trzeciej linii, bo mamy tam dwa identyfikatory zadeklarowane w jednym wierszu: `let gora = 10, dol = 1;`. Taka składnia w JavaScript jest całkowicie poprawna i bardzo często spotykana w kodzie produkcyjnym. Standard ECMAScript dopuszcza deklarację wielu zmiennych w jednym instrukcie `let`, `const` czy `var`, oddzielonych przecinkami. To nie ma żadnego wpływu na poprawność działania skryptu, jest tylko kwestią stylu kodowania. Niektórzy lintersi zalecają jedną zmienną na linię, ale to jest wyłącznie konwencja, nie błąd. Podobnie z instrukcją warunkową `if ... else`. Konstrukcja `if (liczba == podaj) { ... } else { ... }` jest jak najbardziej poprawna składniowo. Nawet użycie operatora `==` (zamiast bardziej restrykcyjnego `===`) nie powoduje tu błędu wykonania, najwyżej może być dyskusyjne ze względu na dobre praktyki, bo `===` nie robi konwersji typów. Jednak w tym konkretnym kodzie obie wartości są konwertowane do liczb, więc porównanie zadziała logicznie. Błąd wykonania nie ma więc źródła w warunku. Czasem pojawia się też myśl, że problemem może być `parseInt(prompt(...))`, bo prompt zwraca tekst. Tymczasem właśnie dlatego używamy `parseInt`, żeby zamienić łańcuch znaków na liczbę całkowitą. Bez tej konwersji porównywalibyśmy liczbę z tekstem, co mogłoby dawać dziwne wyniki logiczne. Konwersja jest tu więc nie tylko „nie niepotrzebna”, ale wręcz wskazana. W nowoczesnym kodzie można by użyć np. `Number(prompt(...))` albo dodatkowo sprawdzić, czy użytkownik faktycznie podał liczbę, ale sam `parseInt` jest jak najbardziej OK. Sednem problemu nie są więc ani deklaracje `gora` i `dol`, ani składnia `if ... else`, ani konwersja wartości z prompta, tylko próba nadpisania stałej. Z mojego doświadczenia wynika, że to bardzo typowy błąd przy nauce `const` i `let`: mylenie stałych z „zwykłymi” zmiennymi. Warto zawsze zadać sobie pytanie: czy ta wartość ma się zmieniać w czasie działania skryptu? Jeśli tak, używamy `let`. Jeśli nie, wtedy dopiero `const`. To prosta zasada, która pozwala uniknąć takich błędów logicznych i runtime'owych.

Pytanie 26

W programie INKSCAPE / COREL aby uzyskać przedstawiony efekt napisu, należy

Ilustracja do pytania
A. zastosować funkcję sumy z kołem.
B. skorzystać z funkcji gradientu.
C. skorzystać z funkcji wstaw / dopasuj tekst do ścieżki.
D. zastosować funkcję wykluczenia z kołem.
Twoja odpowiedź jest prawidłowa. W programach graficznych takich jak Inkscape czy CorelDRAW, aby ułożyć tekst wzdłuż zakrzywionej ścieżki, stosuje się funkcję dopasowania tekstu do ścieżki. Taka funkcja pozwala na zastosowanie tekstu w dowolnym kierunku, co daje dużą swobodę w projektowaniu grafik. Można to robić na różne sposoby, na przykład poprzez ręczne rysowanie ścieżki, a następnie dopasowanie do niej tekstu lub poprzez użycie gotowych kształtów. W CorelDRAW funkcja ta nosi nazwę 'fit text to path', natomiast w Inkscape nazywa się 'text to path'. Jest to technika często stosowana w projektowaniu logo, plakatów, czy też w innych projektach, gdzie tekst musi być dostosowany do niestandardowych kształtów. Prawidłowe zrozumienie i umiejętność wykorzystania tej funkcji znacząco podnosi efektywność pracy w programach graficznych.

Pytanie 27

Które zdarzenie języka JavaScript jest wyzwalane w momencie, gdy kursor myszy znajduje się na elemencie do którego jest przypisane?

A. onmouseout
B. onmouseup
C. onmousedown
D. onmouseover
Prawidłowa odpowiedź to onmouseover, bo właśnie to zdarzenie w JavaScript uruchamia się w momencie, kiedy kursor myszy *wchodzi* na dany element i znajduje się nad nim. Przeglądarka monitoruje położenie kursora i gdy tylko „najedziesz” na element z przypisanym zdarzeniem onmouseover, wywoływany jest podpięty handler, na przykład funkcja w JavaScript. W praktyce często używa się tego do tworzenia efektów typu podświetlanie przycisków, rozwijane menu, podpowiedzi (tooltips) albo lekkie animacje po najechaniu. Przykładowo: `<button onmouseover="this.style.backgroundColor='orange'">Najedź na mnie</button>` – w chwili najechania myszką kolor tła przycisku się zmienia. Moim zdaniem to jedno z bardziej podstawowych zdarzeń, które warto ogarnąć na początku nauki frontendu, bo pozwala szybko zrobić stronę bardziej „żywą”. W nowoczesnym kodzie raczej unika się pisania atrybutów typu onmouseover bezpośrednio w HTML i zamiast tego stosuje się `addEventListener("mouseover", handler)` w JavaScript. Jest to zgodne z dobrymi praktykami i oddziela logikę od struktury dokumentu. Warto też wiedzieć, że onmouseover różni się od onmouseenter: onmouseover propaguje się (bąbelkuje) w górę drzewa DOM, co ma znaczenie przy bardziej złożonych interfejsach. Standardowe API DOM dokładnie opisuje te różnice i przy projektowaniu interakcji dobrze jest świadomie wybierać odpowiedni typ zdarzenia. W typowych projektach webowych onmouseover jest używany głównie do prostych reakcji na najechanie, ale trzeba pamiętać, by nie przesadzać z efektami, żeby nie przeciążyć użytkownika i nie zepsuć użyteczności strony.

Pytanie 28

Na podstawie przedstawionego kodu w języku JavaScript można powiedzieć, że alert nie zostanie wyświetlony, ponieważ

var x = 10;
switch(x) {
    case "10": alert("Test instrukcji switch");
}
A. Nie zastosowano instrukcji break.
B. Nie zastosowano wyrażenia default.
C. Wartość zmiennej x nie została zdefiniowana przed instrukcją switch.
D. W instrukcji switch w wyrażeniu case nie dostosowano zapisu wartości do typu zmiennej x.
Super, twoja odpowiedź jest prawidłowa! Wybierając odpowiedź 'w instrukcji switch w wyrażeniu case nie dostosowano zapisu wartości do typu zmiennej x', zrozumiałeś istotny punkt w porównywaniu wartości w JavaScript. W przeciwieństwie do wielu innych języków, porównania w JavaScript są typowo 'strict comparison'. Oznacza to, że pod uwagę brane są zarówno wartość, jak i typ danych. W naszym przypadku, zmienna x jest liczbą 10, podczas gdy w instrukcji case porównywana jest z ciągiem znaków '10'. Mimo, że obie reprezentują tę samą wartość, są różnymi typami danych. Dlatego też warunek nie jest spełniony i alert nie zostanie wyświetlony. To jest bardzo ważne do zapamiętania podczas pracy z JavaScript, ponieważ może prowadzić do nieoczekiwanych wyników. Pamiętaj zawsze o typach danych podczas korzystania z instrukcji switch i case w JavaScript.

Pytanie 29

Zapis CSS postaci:

 ul {
    list-style-image: url('rys.gif');
}

sprawi, że na stronie internetowej
A. rys.gif będzie stanowił ramkę dla listy nienumerowanej.
B. punktorem listy nienumerowanej będzie rys.gif
C. każdy z punktów listy będzie miał osobne tło pobrane z grafiki rys.gif
D. wyświetli się rysunek rys.gif jako tło listy nienumerowanej.
Gratulacje! Poprawnie zidentyfikowałeś, że w podanym kodzie CSS, obrazek 'rys.gif' będzie służył jako punktor listy nienumerowanej. Według standardów CSS, właściwość list-style-image jest używana do określenia obrazka, który będzie używany jako punktor w liście nienumerowanej. Zasada ta jest bardzo przydatna, kiedy chcemy stworzyć niestandardowe punktory listy, które lepiej pasują do designu naszej strony. Możemy użyć dowolnego obrazka, który jest dostępny online lub zasobu z naszej lokalnej przestrzeni roboczej. Pamiętaj jednak, że obrazek powinien być mały i czytelny. W tym konkretnym przypadku, obrazek 'rys.gif' zostanie ustawiony jako punktor dla każdego elementu listy <li> wewnątrz listy nienumerowanej <ul>. Używając tej techniki, możemy stworzyć atrakcyjniejsze i bardziej interaktywne listy na naszej stronie internetowej.

Pytanie 30

Kwerenda ma za zadanie w tabeli artykuly ALTER TABLE artykuly MODIFY cena float;

A. zmienić typ na float dla kolumny cena
B. usunąć kolumnę cena typu float
C. zmienić nazwę kolumny z cena na float
D. dodać kolumnę cena o typie float, jeśli nie istnieje
Odpowiedź, która zmienia typ kolumny 'cena' na 'float' jest prawidłowa, gdyż użycie kwerendy ALTER TABLE z poleceniem MODIFY pozwala na modyfikację istniejącej kolumny w już utworzonej tabeli. W praktyce, jeśli w tabeli 'artykuły' kolumna 'cena' była wcześniej zdefiniowana jako typ inny niż float, zastosowanie polecenia ALTER TABLE jest właściwą metodą, by dostosować ten typ do wymagań aplikacji, które mogą wymagać precyzyjnych wartości liczbowych, na przykład w kontekście obliczeń finansowych. W SQL, typ float jest używany do przechowywania liczb zmiennoprzecinkowych, co jest szczególnie istotne w przypadku cen, które mogą mieć wartości dziesiętne. Dobre praktyki sugerują, aby zmiana typu danych dokonywana była w sposób przemyślany i po uprzednim sprawdzeniu, czy zmiana nie wpłynie negatywnie na istniejące dane. Warto pamiętać, że przed modyfikacją schematu bazy danych, dobrze jest wykonać kopię zapasową, aby zminimalizować ryzyko utraty danych.

Pytanie 31

Na podstawie przydzielenia wartości do zmiennych w języku PHP można zauważyć, że

$zmienna1 = 15;
$zmienna2 = "15";
$zmienna3 = (string) $zmienna1;
A. wszystkie zmienne mają ten sam typ.
B. zmienna1 i zmienna2 mają ten sam typ.
C. zmienna1 i zmienna3 mają ten sam typ.
D. zmienna2 i zmienna3 mają ten sam typ.
Dobrze widzisz, że $zmienna2 i $zmienna3 mają ten sam typ. Obie przechowują wartości jako stringi, co jest spoko. $zmienna2 to łańcuch z "15", a $zmienna3 to wynik rzutowania $zmienna1 (która jest liczbą całkowitą) na string. W PHP takie rzutowanie to normalna sprawa i nie zmienia wartości, tylko jej format. W praktyce, jeżeli dobrze rozumiesz typy danych, to ułatwia Ci to życie w programowaniu. Różne typy mogą wpływać na to, jak działają operacje i jak dane są przechowywane. Warto więc pamiętać, żeby w kodzie jasno definiować typy zmiennych i używać rzutowania tam, gdzie trzeba, bo to pomaga unikać błędów. Jak się w to wczujesz, to łatwiej będzie Ci ogarniać pamięć i optymalizować kod, zwłaszcza w większych projektach.

Pytanie 32

Na serwerze MySQL do odebrania praw użytkownikowi służy polecenie

A. REVOKE
B. CREATE
C. RENAME
D. GRANT
Poprawna komenda do odebrania uprawnień użytkownikowi w MySQL to REVOKE i warto ją sobie dobrze zakodować w głowie, bo w administracji bazą używa się jej naprawdę często. Składnia w najprostszym wariancie wygląda np. tak: REVOKE SELECT, INSERT ON baza.tabela FROM 'user'@'localhost'; – tutaj odbierasz konkretne prawa (SELECT, INSERT) do wskazanej tabeli danemu użytkownikowi. Można też odebrać wszystkie uprawnienia: REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';, co jest przydatne, gdy chcesz „odciąć” konto od bazy, ale jeszcze go nie usuwać. Z mojego doświadczenia lepiej jest właśnie ograniczać i porządkować uprawnienia, niż od razu kasować użytkowników, bo często wracasz do tych kont np. w środowisku testowym. W MySQL cały mechanizm praw opiera się na parze GRANT/REVOKE: GRANT nadaje uprawnienia, REVOKE je odbiera. To jest zgodne z dobrymi praktykami bezpieczeństwa – minimalny dostęp, tylko tyle, ile jest faktycznie potrzebne (zasada least privilege). W realnych projektach webowych np. aplikacja PHP powinna mieć konto w MySQL z ściśle ograniczonym zakresem operacji, a gdy zmienia się rola aplikacji, zamiast tworzyć nowe konto „na pałę”, lepiej doprecyzować lub cofnąć stare uprawnienia właśnie przez REVOKE. Warto też pamiętać, że po większych zmianach praw dobrze jest wykonać FLUSH PRIVILEGES w starszych wersjach MySQL lub po modyfikacjach bezpośrednio w tabelach systemowych, chociaż standardowo przy GRANT/REVOKE nie jest to już konieczne. Moim zdaniem opanowanie REVOKE to podstawa świadomej administracji serwerem bazodanowym, szczególnie gdy mówimy o środowiskach produkcyjnych, gdzie każdy nadmiarowy przywilej może być potencjalnym zagrożeniem.

Pytanie 33

Do uruchomienia systemu CMS Joomla!, dla domyślnej konfiguracji, wymagane jest środowisko

A. Apache, PHP i MySQL
B. C++ i MySQL
C. Python i MySQL
D. IIS, PERL i MySQL
Poprawnie – Joomla! w swojej domyślnej, typowej instalacji działa w klasycznym stosie LAMP/WAMP, czyli serwer HTTP Apache, interpreter PHP oraz baza danych MySQL (obecnie często MariaDB, ale w praktyce nadal mówi się „MySQL”). Joomla! to system CMS napisany w PHP, więc potrzebuje środowiska, które potrafi wykonywać kod PHP po stronie serwera. Apache jest jednym z najpopularniejszych serwerów WWW, świetnie współpracuje z PHP poprzez moduł mod_php albo PHP-FPM i jest standardowo wspierany w dokumentacji Joomla!. Baza MySQL służy do przechowywania wszystkich treści: artykułów, użytkowników, menu, modułów, konfiguracji. Podczas instalacji Joomla! tworzy tabele w MySQL, zapisuje tam dane konfiguracyjne i później przy każdym wyświetleniu strony pobiera je zapytaniami SQL. W praktyce, jeśli stawiasz Joomla! na hostingu współdzielonym, dostajesz właśnie taki zestaw: Apache + PHP + MySQL, często z panelem typu cPanel lub DirectAdmin. To jest zgodne z dobrymi praktykami w branży webowej – prosty, sprawdzony stos, łatwy w administracji i dobrze udokumentowany. Moim zdaniem to też wygodne na etapie nauki: możesz lokalnie postawić XAMPP, WAMP lub Laragon i bez kombinowania odpalić Joomla! na swoim komputerze. W świecie produkcyjnym coraz częściej używa się też Nginx zamiast Apache, ale w treści pytania jest mowa o domyślnej, typowej konfiguracji, a tutaj dalej króluje Apache z PHP i MySQL jako standardowe, rekomendowane środowisko.

Pytanie 34

W aplikacji webowej komunikat powinien być wyświetlany jedynie w przypadku, gdy dany użytkownik odwiedza stronę po raz pierwszy. Którą funkcję PHP należy wykorzystać w tym celu?

A. setcookie
B. session_destroy
C. define
D. mysqli_change_user
Funkcja setcookie w PHP jest kluczowym narzędziem do zarządzania ciasteczkami. Ciasteczka są małymi plikami przechowywanymi na urządzeniu użytkownika, które mogą być wykorzystywane do różnych celów, w tym do śledzenia sesji użytkownika, personalizacji doświadczeń oraz, w tym przypadku, do kontrolowania wyświetlania komunikatów. Gdy użytkownik odwiedza stronę po raz pierwszy, można ustawić ciasteczko, które informuje system, że użytkownik jest nowym odwiedzającym. Na przykład, można ustawić ciasteczko o nazwie "first_visit" z wartością "1", co oznacza, że komunikat powinien się pojawić. Przy kolejnych wizytach, przed wyświetleniem komunikatu, system sprawdzi, czy to ciasteczko istnieje. Jeśli tak, komunikat nie zostanie wyświetlony. Przykładowa implementacja wyglądałaby tak: if (!isset($_COOKIE['first_visit'])) { setcookie('first_visit', '1', time() + 3600); // Ciasteczko ważne przez 1 godzinę echo 'Witamy na stronie!'; // Wyświetlenie komunikatu } Dzięki temu podejściu można efektywnie zarządzać doświadczeniem użytkownika i unikać zasypywania ich komunikatami przy każdej wizycie, co jest zgodne z najlepszymi praktykami UX.

Pytanie 35

Pojęcie krotka odpowiada

A. relacji
B. kolumnie
C. wierszowi
D. tabeli
Relacje, tabele i kolumny są istotnymi pojęciami w kontekście baz danych, ale nie można ich mylić z pojęciem krotki. Relacja jest abstrakcyjnym pojęciem odnoszącym się do zbioru danych w tabeli oraz opisuje sposób, w jaki dane są związane ze sobą. To nie jest to samo, co konkretne wpisy w tabeli. Tabela to struktura, która organizuje dane w formie wierszy i kolumn, ale sama w sobie nie reprezentuje jednostkowego rekordu danych. Kolumna z kolei odnosi się do pojedynczego atrybutu w tabeli, który przechowuje dane jednego typu, na przykład wszystkich adresów e-mail. Typowym błędem jest mylenie tych pojęć, co może prowadzić do niepoprawnych założeń na temat struktury danych oraz ich interakcji. Właściwe zrozumienie tego, czym jest krotka, jest kluczowe dla efektywnej pracy z bazami danych, ponieważ pozwala uniknąć problemów z integracją danych i ich późniejszym przetwarzaniem. W praktyce, brak znajomości różnic między tymi pojęciami może prowadzić do błędów w projektowaniu baz danych oraz w zapytaniach SQL, co negatywnie wpływa na wydajność i jakość danych.

Pytanie 36

W przypadku podanego fragmentu kodu walidator HTML zgłosi błąd, ponieważ <img src="kwiat.jpg alt="kwiat">

A. użyto niewłaściwego znacznika do wyświetlenia obrazu
B. zastosowano nieznany atrybut alt
C. nie zamknięto cudzysłowu
D. brak obrazu kwiat.jpg
W przedstawionym kodzie HTML występuje błąd związany z niedomknięciem cudzysłowu dla atrybutu 'src'. Prawidłowa składnia powinna wyglądać następująco: <img src="kwiat.jpg" alt="kwiat">. Brak cudzysłowu po 'kwiat.jpg' uniemożliwia poprawne zinterpretowanie kodu przez przeglądarki, co skutkuje błędem walidacji. Zasady walidacji kodu HTML są zgodne z wytycznymi W3C, które zalecają, aby każdy atrybut był zamknięty cudzysłowem. Poprawność kodu nie tylko wpływa na jego działanie, ale również na dostępność strony oraz SEO. Użytkownicy, którzy poruszają się po stronach bez pełnej obsługi HTML, mogą napotkać problemy z wyświetlaniem obrazów. W praktyce, zawsze warto stosować dobregi praktyki kodowania, takie jak użycie linterów do sprawdzania poprawności kodu przed jego publikacją, aby uniknąć takich błędów.

Pytanie 37

Którą funkcję z menu Kolory programu GIMP użyto, w celu uzyskania efektu przedstawionego w filmie?

A. Krzywe.
B. Inwersja.
C. Barwienie.
D. Progowanie.
Wiele osób myli w GIMP-ie różne narzędzia z menu Kolory, bo na pierwszy rzut oka kilka z nich „mocno zmienia” obraz. Jednak efekt pokazany na filmie, gdzie obraz staje się dwuwartościowy (czarno-biały, bez półtonów), jest typowym działaniem funkcji Progowanie. Kluczowe jest tu zrozumienie, czym różnią się od siebie dostępne operacje. Krzywe służą do zaawansowanej korekcji tonalnej i kontrastu. Można nimi mocno przyciemnić lub rozjaśnić wybrane zakresy jasności, robić tzw. efekt kontrastu „S”, korygować prześwietlenia itd. Ale nawet przy bardzo agresywnych ustawieniach krzywych obraz nadal zawiera półtony – pojawiają się stopniowe przejścia między odcieniami, a nie ostre odcięcie na zasadzie czarne/białe. To świetne narzędzie do retuszu zdjęć, ale nie do uzyskania efektu progowania. Inwersja (Kolory → Inwersja) po prostu odwraca wartości kolorów lub jasności: jasne staje się ciemne, czerwony zmienia się na cyjan, zielony na magentę itd. To jak negatyw fotograficzny. Struktura szczegółów pozostaje identyczna, zmienia się tylko ich „biegun”. Nie pojawia się żadne odcięcie progowe, więc obraz wciąż ma pełne spektrum odcieni. W praktyce inwersja przydaje się np. przy przygotowaniu masek lub pracy z materiałami skanowanymi, ale nie generuje typowego, „plakatowego” efektu czerni i bieli jak progowanie. Barwienie z kolei (Kolory → Barwienie) służy do nadania całemu obrazowi jednolitego odcienia, zwykle po wcześniejszym sprowadzeniu go do skali szarości. Można w ten sposób uzyskać np. sepię, niebieski ton nocny albo dowolny kolorystyczny „filtr”. Jasność i kontrast lokalny pozostają bardzo podobne, zmienia się dominująca barwa. To zupełnie inna kategoria operacji niż progowanie, które pracuje na poziomie progów jasności, a nie na poziomie koloru. Typowym błędem jest patrzenie tylko na to, że „obraz bardzo się zmienił” i przypisywanie tego narzędziom takim jak krzywe czy inwersja. W pracy z grafiką warto zawsze zadać sobie pytanie: czy efekt polega na zmianie rozkładu jasności, na odwróceniu kolorów, czy na twardym podziale na dwa poziomy? Jeśli widzisz brak półtonów i ostre granice, praktycznie zawsze chodzi o progowanie, które zostało wskazane jako poprawna funkcja.

Pytanie 38

Zaprezentowano kod tabeli o wymiarach 3x2. Jaką zmianę wprowadzić w jej drugim wierszu, aby tabela była zgodna z obrazkiem ukazującym niewidoczny wiersz?

Ilustracja do pytania
A. <tr style="display: none">
B. <tr style="visibility: hidden">
C. <tr style="clear: none">
D. <tr style="display: table-cell">
Stosowanie stylu display: none w tabeli spowodowałoby całkowite usunięcie wiersza z układu, co oznacza, że nie tylko zawartość, ale i przestrzeń, którą zajmuje wiersz, zniknęłaby. To wpływa na pozostałe elementy tabeli, zmieniając jej układ i potencjalnie zaburzając całość kompozycji. Z kolei użycie clear: none w tym kontekście jest błędne, ponieważ clear dotyczy przepływu floatów, a nie bezpośrednio ukrywania lub pokazywania elementów. Ustawienie display: table-cell jest także nieodpowiednie, gdyż odnosi się do właściwości display elementów, które powinny być traktowane jako komórki tabeli, a nie całe wiersze. Typowym błędem jest mylenie visibility: hidden z display: none; pierwsza opcja powoduje ukrycie zawartości, ale zachowanie miejsca, co jest ważne w kontekście dynamicznych układów stron. Błędne rozumienie, jak różne style wpływają na układ dokumentu, może prowadzić do problemów z responsywnością i dostępnością projektu. Dobrym zwyczajem jest dokładne testowanie efektów używanych właściwości CSS, aby zrozumieć ich praktyczny wpływ na HTML, co jest kluczowe w zaawansowanym projektowaniu stron internetowych.

Pytanie 39

Jakim słowem kluczowym można zestawić wyniki dwóch zapytań SELECT, które operują na różnych tabelach, aby utworzyć jeden zbiór danych?

A. JOIN
B. DISTINCT
C. UNION
D. AS
Odpowiedź 'UNION' jest poprawna, ponieważ słowo kluczowe UNION służy do łączenia wyników dwóch lub więcej kwerend SELECT w jeden zbiór, pod warunkiem, że te kwerendy mają tę samą liczbę kolumn oraz odpowiednie typy danych. Praktycznie, UNION jest niezwykle przydatne, gdy chcemy uzyskać zintegrowane wyniki z różnych tabel, które zawierają pokrewne dane. Na przykład, jeśli mamy tabelę klientów w systemie A oraz tabelę klientów w systemie B, możemy użyć kwerendy z UNION, aby uzyskać pełną listę klientów z obu systemów. Warto także zaznaczyć, że UNION domyślnie eliminuje zduplikowane rekordy, co jest zgodne z dobrymi praktykami w analizie danych, gdzie często dąży się do uzyskania unikalnych wyników. Można również używać UNION ALL, jeśli chcemy, aby wszystkie wyniki, w tym duplikaty, były zawarte w końcowym zbiorze. Wybór między UNION a UNION ALL powinien być uzależniony od potrzeb w zakresie unikalności danych w wynikach końcowych.

Pytanie 40

Skrypt w języku JavaScript, który zajmuje się płacami pracowników, ma na celu stworzenie raportu dla osób zatrudnionych na umowę o pracę, które otrzymują wynagrodzenie w przedziale 4000 do 4500 zł, w tym przedziale obustronnie domkniętym. Jakie jest kryterium do wygenerowania raportu?

A. umowa == 'praca' && (pensja >= 4000 || pensja <= 4500)
B. umowa == 'praca' || (pensja >= 4000 || pensja <= 4500)
C. umowa == 'praca' || (pensja >= 4000 && pensja <= 4500)
D. umowa == 'praca' && (pensja >= 4000 && pensja <= 4500)
Wielu uczniów ma kłopoty z poprawnym rozumieniem operatorów logicznych i jak je łączyć. Na przykład, odpowiedź umowa == 'praca' || (pensja >= 4000 || pensja <= 4500) jest niepoprawna, bo mówi, że wystarczy spełnić chociaż jeden z warunków, co nie zgadza się z tym, czego chcieliśmy. W tej sytuacji, jeśli pracownik nie ma umowy o pracę, a jego pensja wynosi 5000 zł, to raport i tak może się wygenerować, co jest sprzeczne z zamysłem pytania. Inny błąd to użycie '||' w odpowiedzi umowa == 'praca' && (pensja >= 4000 || pensja <= 4500) – to znowu prowadzi do nieprawidłowego wniosku. Gdy pensja wynosi 3500 zł, raport ma szansę na generację, mimo że nie spełnia wymogu dotyczącego płac. W odpowiedzi umowa == 'praca' || (pensja >= 4000 && pensja <= 4500) też widać błędne zrozumienie operatorów, co prowadzi do sytuacji, w której raport może być generowany dla pracowników z pensjami poniżej 4000 zł, tylko dlatego, że mają umowę o pracę. Kluczowy błąd to brak dostrzegania, że w takich sytuacjach wszystkie warunki muszą być spełnione, co oznacza, że trzeba używać operatora '&&'. Zrozumienie operatorów logicznych to podstawa w programowaniu i bardzo ważny element przy tworzeniu skutecznych skryptów.