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: 28 kwietnia 2026 13:29
  • Data zakończenia: 28 kwietnia 2026 13:43

Egzamin niezdany

Wynik: 18/40 punktów (45,0%)

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

Przykład zapytania SQL przedstawia instrukcję:

UPDATE katalog SET katalog.cena = [cena]*1.1;
A. dołączającej
B. krzyżowej
C. usuwającej
D. aktualizującej
Instrukcja SQL przedstawiona w pytaniu używa słowa kluczowego UPDATE co jest charakterystyczne dla kwerend aktualizujących. Komenda ta modyfikuje istniejące dane w tabeli poprawiając je zgodnie z podanymi kryteriami. W tym przykładzie wszystkie wartości w kolumnie cena tabeli katalog są zwiększane o 10 procent co jest typowym zastosowaniem instrukcji aktualizującej. W praktyce takie zmiany są niezbędne w przypadku modyfikacji cen produktów lub aktualizacji informacji biznesowych. Stosowanie kwerend aktualizujących wymaga zachowania szczególnej ostrożności aby nie naruszyć integralności danych. Dobre praktyki obejmują przygotowanie backupu danych przed wykonaniem operacji oraz przetestowanie kwerendy na mniejszym zbiorze danych w celu uniknięcia błędów. Aktualizacja danych to jedna z najczęstszych operacji w systemach bazodanowych dlatego zrozumienie mechanizmu działania kwerend SQL tego typu jest kluczowe dla efektywnego zarządzania danymi w każdej organizacji. SQL jako język deklaratywny umożliwia łatwe definiowanie co chcemy osiągnąć bez konieczności szczegółowego opisywania jak to zrobić co ułatwia pracę z dużymi i złożonymi zbiorami danych.

Pytanie 2

Jakim formatem kompresji dźwięku, który nie traci jakości, jest?

A. AAC
B. FLAC
C. MP3
D. WWA
MP3, AAC i WWA to formaty stratne, co oznacza, że podczas kompresji dźwięku następuje utrata pewnych informacji, co może prowadzić do pogorszenia jakości dźwięku. MP3, jako jeden z najpopularniejszych formatów audio, stosuje algorytmy kompresji, które eliminują dźwięki, które są mniej słyszalne dla ludzkiego ucha, w celu zmniejszenia rozmiaru pliku. Choć MP3 jest szeroko stosowane w aplikacjach muzycznych i odtwarzaczach, jego jakość nie dorównuje bezstratnym formatom, takim jak FLAC. Podobnie AAC, rozwinięcie MP3, także stosuje stratną kompresję i jest często wykorzystywane w serwisach streamingowych oraz jako format dźwięku w iPodach i iTunes. Pomimo lepszej jakości dźwięku w porównaniu do MP3, AAC wciąż nie oferuje tej samej jakości dźwięku co FLAC. WWA, czyli Windows Media Audio, to kolejny format, który wykorzystuje stratną kompresję. Choć zapewnia lepszą jakość dźwięku przy niższych bitratach, to również nie jest w stanie zachować pełnej jakości oryginalnego nagrania. Użytkownicy, którzy poszukują najwyższej jakości dźwięku, powinni unikać formatów stratnych na rzecz FLAC, który zachowuje wszystkie szczegóły dźwięku.

Pytanie 3

Podaj zapytanie SQL, które tworzy użytkownika sekretarka na localhost z hasłem zaq123?

A. CREATE USER `sekretarka`@`localhost` IDENTIFY "zaq123";
B. CREATE USER 'sekretarka'@'localhost' IDENTIFIED `zaq123`;
C. CREATE USER `sekretarka`@`localhost` IDENTIFY BY `zaq123`;
D. CREATE USER `sekretarka`@`localhost` IDENTIFIED BY 'zaq123';
Odpowiedź "CREATE USER `sekretarka`@`localhost` IDENTIFIED BY 'zaq123';" jest prawidłowa, ponieważ wykorzystuje poprawną składnię do tworzenia nowego użytkownika w systemie zarządzania bazą danych MySQL. Kluczowe jest użycie słowa kluczowego 'IDENTIFIED BY', które wskazuje, że podane hasło ('zaq123') ma być powiązane z nowym użytkownikiem. Wartości w apostrofach są odpowiednie dla łańcuchów tekstowych w SQL, co jest zgodne z dobrymi praktykami programowania w MySQL. W praktyce, tworzenie użytkowników z odpowiednimi uprawnieniami jest niezbędne do zarządzania dostępem do bazy danych oraz zapewnienia bezpieczeństwa. Dobrą praktyką jest stosowanie silnych haseł oraz regularne audyty kont użytkowników. Warto również zwrócić uwagę na konwencje nazewnictwa oraz ograniczenia w zakresie adresów IP, co ma znaczenie w kontekście bezpieczeństwa i zarządzania użytkownikami w systemie zarządzania bazą danych.

Pytanie 4

Podaj polecenie SQL, które pozwoli na dodanie kolumny miesiacSiewu do tabeli rośliny znajdującej się w bazie danych

A. CREATE TABLE rośliny {miesiacSiewu int};
B. UPDATE rośliny ADD miesiacSiewu int;
C. ALTER TABLE rośliny ADD miesiacSiewu int;
D. INSERT INTO rośliny VALUES (miesiacSiewu int);
Inne odpowiedzi nie są poprawne z paru powodów. Na przykład, 'CREATE TABLE rośliny {miesiacSiewu int};' jest błędne, bo komenda 'CREATE TABLE' służy do tworzenia nowych tabel, nie do zmieniania istniejących. To może wprowadzać w błąd co do podstaw SQL, bo 'CREATE' nie działa w kontekście dodawania kolumn do już istniejącej tabeli. Z kolei 'INSERT INTO rośliny VALUES (miesiacSiewu int);' dotyczy dodawania danych, a nie zmiany struktury. To częsty błąd, gdy ktoś myli dodawanie nowych danych z dodawaniem kolumn, co pokazuje, że nie do końca rozumie różnicę między DDL (Data Definition Language) a DML (Data Manipulation Language). A 'UPDATE rośliny ADD miesiacSiewu int;' też nie ma sensu, bo komenda UPDATE jest do aktualizacji danych, a nie do zmiany struktury tabeli. Takie pomyłki mogą wkurzać i sprawiać problemy z bazami danych, dlatego warto mieć dobrą wiedzę o poleceniach SQL i ich zastosowaniach.

Pytanie 5

Relacja opisana jako: "Rekord z tabeli A może odpowiadać wielu rekordom z tabeli B. Każdemu rekordowi z tabeli B przyporządkowany jest dokładnie jeden rekord z tabeli A" jest relacją

A. jeden do jednego
B. wiele do wielu
C. nieoznaczoną
D. jeden do wielu
Relacja typu jeden do wielu oznacza, że jeden rekord z jednej tabeli (w tym przypadku tabela A) może być powiązany z wieloma rekordami z innej tabeli (tabela B). W opisanej sytuacji rekord z tabeli A może odpowiadać dowolnej liczbie rekordów z tabeli B, co ilustruje tę relację. Przykładem takiej relacji może być baza danych systemu zarządzania szkołą, gdzie jeden nauczyciel (rekord z tabeli A) może uczyć wielu uczniów (rekordy z tabeli B), ale każdy uczeń jest przypisany do jednego nauczyciela. Przy projektowaniu baz danych, stosowanie odpowiednich relacji jest kluczowe dla integralności i wydajności systemu. Dbałość o takie relacje przyczynia się do poprawy jakości danych oraz minimalizacji redundancji, co jest zgodne z zasadami normalizacji baz danych. W praktyce, relacje jeden do wielu są powszechnie stosowane w systemach CRM, ERP oraz wielu innych aplikacjach, które wymagają organizacji danych w sposób logiczny i praktyczny.

Pytanie 6

W tabeli artykuly znajduje się pole o nazwie nowy. Aby pole to wypełnić wartościami TRUE dla każdego rekordu, należy zastosować kwerendę

A. UPDATE artykuly SET nowy = TRUE;
B. INSERT INTO artykuly VALUE nowy = TRUE;
C. UPDATE nowy FROM artykuly VALUE TRUE;
D. INSERT INTO nowy FROM artykuly SET TRUE;
Poprawna kwerenda UPDATE artykuly SET nowy = TRUE; jest klasycznym przykładem instrukcji aktualizacji danych w SQL. Słowo kluczowe UPDATE wskazuje, że modyfikujemy istniejące rekordy, a nie dodajemy nowe. Nazwa tabeli artykuly określa, w której tabeli wykonujemy operację. Następnie część SET nowy = TRUE ustawia dla kolumny nowy wartość logiczną TRUE we wszystkich wierszach, ponieważ w zapytaniu nie ma klauzuli WHERE. I to jest tu kluczowe: brak WHERE oznacza, że aktualizacja dotknie każdego rekordu w tabeli. Moim zdaniem warto zapamiętać schemat: UPDATE nazwa_tabeli SET kolumna = wartość WHERE warunek;. W praktyce bardzo często dodaje się WHERE, np.: UPDATE artykuly SET nowy = TRUE WHERE data_dodania >= '2026-01-01'; – wtedy oznaczamy jako nowe tylko artykuły dodane od konkretnej daty. W zadaniu jednak wyraźnie jest mowa o każdym rekordzie, więc brak WHERE jest jak najbardziej zgodny z treścią. W większości systemów bazodanowych (MySQL, PostgreSQL, SQL Server, MariaDB) ta składnia jest standardowa i zalecana. Dobra praktyka jest taka, żeby przed odpaleniem UPDATE bez WHERE najpierw zrobić SELECT * FROM artykuly; albo SELECT COUNT(*) FROM artykuly;, żeby mieć świadomość, ile rekordów zmienimy. W projektach produkcyjnych często dodaje się też transakcje, np. w PostgreSQL: BEGIN; UPDATE artykuly SET nowy = TRUE; COMMIT; dzięki temu w razie pomyłki można zrobić ROLLBACK. Warto też wiedzieć, że kolumna typu logicznego może przyjmować wartości TRUE, FALSE, czasem 1/0 (np. w MySQL), ale forma z TRUE/FALSE jest czytelniejsza i bardziej zgodna z semantyką. W wielu aplikacjach webowych pole w stylu nowy służy np. do filtrowania artykułów w panelu administracyjnym albo na stronie głównej: SELECT * FROM artykuly WHERE nowy = TRUE;. To dokładnie ten sam atrybut, który przed chwilą masowo ustawiliśmy poleceniem UPDATE.

Pytanie 7

Dany jest fragment kodu PHP z zadeklarowaną zmienną typu tablicowego W wyniku wykonania kodu zostanie wypisane imię

$imiona = array('Anna', 'Tomasz', 'Krzysztof', 'Aleksandra');
echo $imiona[2];
A. Anna
B. Tomasz
C. Krzysztof
D. Aleksandra
Twoja odpowiedź nie była prawidłowa. Możliwe, że doszło do nieporozumienia dotyczącego tego, jak funkcja 'echo' jest używana w PHP do wyświetlania danych. W podanym fragmencie kodu, 'echo' jest używane do wypisania elementu tablicy '$imiona' o indeksie [2]. W PHP, indeksowanie tablicy zaczyna się od 0, co oznacza, że trzeci element tablicy ma indeks [2]. Dlatego też wynikiem jest 'Krzysztof', a nie 'Tomasz', 'Aleksandra' czy 'Anna'. To jest częsty błąd początkujących programistów, którzy nie są jeszcze przyzwyczajeni do indeksowania od zera. Ponadto, warto pamiętać, że PHP pozwala na manipulowanie danymi tablicy poprzez wywoływanie konkretnego indeksu, co jest wysoce użyteczne w różnych kontekstach programistycznych. Zrozumienie tej koncepcji jest kluczowe dla dalszego programowania w PHP.

Pytanie 8

Jak należy poprawnie udokumentować wzorzec weryfikacji dla pola nazwa w kodzie aplikacji JavaScript?

Ilustracja do pytania
A. /* Pole nazwa musi składać się w tej kolejności: z ciągu cyfr (z wyłączeniem 0), następnie dużych liter i dwóch małych liter. */
B. /* Pole nazwa może składać się z dowolnego ciągu cyfr (z wyłączeniem 0), małych i dużych liter. */
C. /* Pole nazwa powinno składać się w tej kolejności: z ciągu cyfr (z wyłączeniem 0), następnie dużej litery i ciągu małych liter. */
D. /* Pole nazwa może zawierać dowolny ciąg cyfr (z wyłączeniem 0), następnie musi zawierać dużą literę i ciąg minimum dwóch małych liter. */
Niepoprawne odpowiedzi zakładają niewłaściwą interpretację wymagań dotyczących wzorca walidacji. Pierwsza opcja sugeruje że pole 'nazwa' może składać się z dowolnych cyfr i liter co nie uwzględnia wymogu specyficznej kolejności i liczby znaków co może prowadzić do wprowadzenia nieprawidłowych danych. Taki brak restrykcji mógłby skutkować potencjalnymi lukami w zabezpieczeniach aplikacji. Inna odpowiedź zakłada że po cyfrze musi wystąpić duża litera a następnie ciąg małych liter co nie spełnia wymogu co najmniej dwóch małych liter. Podejście to ignoruje szczegółowe wymagania dotyczące liczby małych liter w końcowej części ciągu. Kolejne błędne założenie mówi o konieczności posiadania dwóch małych liter ale nie wymaga dużej litery co również jest sprzeczne ze wzorcem przedstawionym w zadaniu. Częstym błędem jest nieuwzględnianie pełnej struktury wzorca co powoduje że walidacja jest niekompletna i potencjalnie niewystarczająca do zapewnienia integralności danych. Prawidłowe użycie wyrażeń regularnych wymaga szczegółowego zrozumienia zarówno składni jak i logiki stojącej za walidacją danych aby skutecznie zabezpieczyć aplikację przed nieprawidłowymi wpisami które mogą wpłynąć na jej funkcjonalność i bezpieczeństwo. Zrozumienie zasad poprawnej walidacji jest kluczowym elementem w procesie tworzenia bezpiecznych i niezawodnych aplikacji webowych.

Pytanie 9

Kod umieszczony w ramce spowoduje wyświetlenie liczb

Ilustracja do pytania
A. 1 3 5 7 9
B. 2 4 6 8 10
C. 2 4 6 8
D. 1 2 3 4 5 6 7 8 9 10
Prawidłowa odpowiedź to 2 4 6 8 10 co wynika z działania przedstawionego kodu PHP. Pętla for rozpoczyna się od wartości zmiennej x równej 1 i zwiększa ją o jeden przy każdej iteracji aż do osiągnięcia wartości 10 włącznie. Instrukcja if($x % 2 != 0) continue oznacza że dla każdej nieparzystej liczby x wykonanie reszty kodu pętli jest pomijane i kontynuowane jest od kolejnej iteracji. Oznacza to że tylko liczby parzyste są wypisywane na ekranie co zgadza się z przedstawioną odpowiedzią. W praktyce taka konstrukcja jest używana do filtrowania danych gdzie chcemy przetwarzać tylko określone warunki. Stosowanie operatora modulo % jest standardową techniką do sprawdzania podzielności liczb co jest często wykorzystywane w programowaniu np. do selekcji danych lub w algorytmach kryptograficznych. Dobrą praktyką jest również używanie instrukcji continue gdy chcemy zminimalizować zagnieżdżenie kodu i poprawić jego czytelność poprzez eliminację zbędnych bloków else. Użycie pętli for z takim warunkiem pozwala na efektywne przetwarzanie dużych zbiorów danych co jest kluczowe w aplikacjach wymagających wysokiej wydajności.

Pytanie 10

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

A. Barwienie.
B. Inwersja.
C. Progowanie.
D. Krzywe.
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 11

Aby właściwie skomentować podaną linię kodu w JavaScript, należy po znakach // wpisać opis

document.getElementById("napis").innerHTML = Date(); //
A. nieprawidłowe dane
B. wyświetlenie tekstu "Date()" w znaczniku o id = napis
C. zmiana stylu atrybutu innerHTML
D. wyświetlenie daty i czasu w znaczniku o id = napis
Kod JavaScript document.getElementById('napis').innerHTML=Date(); służy do dynamicznego umieszczania aktualnej daty i czasu w elemencie HTML o podanym id napis. Funkcja Date() bez argumentów zwraca obiekt reprezentujący bieżącą datę i czas w formie czytelnej dla człowieka. Użycie innerHTML pozwala na modyfikację zawartości HTML elementu, co jest wykorzystywane w wielu aplikacjach internetowych do dynamicznej aktualizacji wyświetlanych danych. Przykładem praktycznego zastosowania może być wyświetlanie aktualnego czasu na stronie głównej lub w aplikacjach pogodowych. Zgodnie z dobrymi praktykami, należy jednak pamiętać, że innerHTML zastępuje całą zawartość wewnętrzną elementu, co może prowadzić do utraty danych, jeśli nie jest używane ostrożnie. Ważne jest również, aby pamiętać o zasadach bezpieczeństwa dotyczących manipulacji DOM, aby unikać luk umożliwiających ataki XSS. Dlatego też warto stosować się do zasady minimalizmu zmian w DOM oraz zawsze weryfikować przetwarzane dane.

Pytanie 12

Który z kodów PHP sprawi, że zostanie wyświetlona sformatowana data oraz czas ostatnich odwiedzin użytkownika witryny, natomiast podczas pierwszej wizyty nic się nie wyświetli?

Kod 1.   echo date('d.m.Y, H:i', $_COOKIE['c1']);
         setcookie('c1', time());

Kod 2.   if(isset($_COOKIE['c1']))
           echo date($_COOKIE['c1']);
         setcookie('c1', time(), time() + 30 * 86400);

Kod 3.   echo date($_COOKIE['c1']);
         setcookie('c1', time(), time() + 30 * 86400);

Kod 4.   setcookie('c1', time(), time() + 30 * 86400);
A. Kod 2.
B. Kod 3.
C. Kod 1.
D. Kod 4.
Prawidłowa odpowiedź to Kod 2. Ten kod wykorzystuje funkcję isset() w PHP do sprawdzenia, czy ciasteczko o nazwie 'c1' jest już ustawione. Jeżeli tak, oznacza to, że użytkownik odwiedził stronę wcześniej i kod wyświetla datę i czas jego ostatnich odwiedzin zapisane w tym ciasteczku. Następnie ciasteczko jest aktualizowane i zapisuje obecny czas, który będzie wyświetlany podczas następnej wizyty. Jeżeli ciasteczko 'c1' nie istnieje, oznacza to, że jest to pierwsza wizyta użytkownika na stronie. W takim przypadku kod nie wyświetla nic, a jedynie tworzy ciasteczko 'c1' z aktualnym czasem. To podejście jest zgodne z dobrymi praktykami w PHP, które zalecają użycie funkcji isset() do sprawdzenia istnienia zmiennej przed jej użyciem, co pozwala uniknąć błędów w przypadku, gdy zmienna nie jest zdefiniowana. Korektnie użycie ciasteczek pozwala na śledzenie aktywności użytkownika i dostosowywanie treści do jego potrzeb.

Pytanie 13

Przedstawiona linia kreskowa w stylu obramowania CSS jest określona własnością

Ilustracja do pytania
A. doted
B. double
C. dashed
D. solid
Dobrze zrozumiałeś temat. Linia kreskowa w stylu CSS jest określana właściwością 'dashed'. Jest to jedna z kilku wartości, które można przypisać właściwości 'border-style' w języku CSS, aby manipulować wyglądem obramowania elementu. Stosowanie różnych styli linii pozwala na tworzenie bardziej skomplikowanych i estetycznie przyjemnych projektów. Na przykład, styl 'dashed' może być używany do zaznaczania linków lub przycisków, aby zwrócić uwagę użytkownika. Ważne jest jednak, aby zawsze pamiętać o utrzymaniu konsekwencji w projektowaniu stron internetowych. Dobre praktyki zalecają, aby wybierać styl obramowania, który najlepiej pasuje do ogólnego stylu strony. Podsumowując, właściwość 'border-style' jest kluczowym narzędziem w projektowaniu stron internetowych.

Pytanie 14

W bazie danych sklepu internetowego, w tabeli klienci znajdują się m.in. pola całkowite: punkty, liczbaZakupow oraz pole ostatnieZakupy o typie DATE. Klauzula WHERE dla zapytania wybierającego klientów, którzy mają ponad 3000 punktów lub dokonali zakupów więcej niż 100 razy, a ich ostatnie zakupy miały miejsce co najmniej w roku 2022, przyjmuje postać

A. WHERE punkty > 3000 AND liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
B. WHERE punkty > 3000 OR liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
C. WHERE punkty > 3000 AND liczbaZakupow > 100 AND ostatnieZakupy >= '2022-01-01'
D. WHERE (punkty > 3000 OR liczbaZakupow > 100) AND ostatnieZakupy >= '2022-01'
W przypadku pozostałych odpowiedzi pojawiają się istotne błędy związane z logiką stosowania operatorów w klauzuli WHERE. W pierwszej z niepoprawnych opcji zastosowano operator OR w połączeniu z operatorami AND, co prowadzi do niejednoznaczności w logice kwerendy. Taki zapis sugeruje, że każdy klient, który spełnia tylko jeden z podanych warunków, zostanie wybrany, co nie jest zgodne z wymaganiami zadania. W drugim przypadku, zastosowanie operatora AND dla wszystkich warunków implikuje, że klient musi jednocześnie spełniać wszystkie trzy warunki, co znacząco zawęża grupę wyników i może prowadzić do pominięcia klientów, którzy są wartościowi z punktu widzenia transakcji, ale nie spełniają wszystkich kryteriów jednocześnie. W ostatniej opcji również zastosowano operator AND we wszystkich warunkach, co jest niezgodne z zamysłem zapytania. Ważne jest, aby w takich sytuacjach dobrze rozumieć logikę operacji logicznych oraz ich konsekwencje w praktyce. Kluczowym błędem jest nieodpowiednie zrozumienie relacji między warunkami oraz ich wzajemnego wpływu na ostateczny wynik zapytania. W SQL istotne jest precyzyjne formułowanie zapytań, aby uniknąć niezamierzonych wyników, dlatego warto na etapie pisania schematów myśleć o logice, która będzie spełniać założone cele analizy danych.

Pytanie 15

W JavaScript poprawnie zdefiniowana zmienna to

A. imię%
B. #imie
C. imie2
D. imię2
W przypadku odpowiedzi 'imię%' występuje nieprawidłowy znak specjalny, co łamie zasady dotyczące nazewnictwa zmiennych w JavaScript. Zgodnie z tymi zasadami, zmienne mogą zawierać tylko litery, cyfry, znaki podkreślenia oraz znaki dolara, ale nie mogą kończyć się ani zawierać znaków specjalnych, takich jak procent. Z tego powodu, użycie takiego znaku w nazwie zmiennej prowadzi do błędów składniowych i jest niezgodne z konwencjami programistycznymi. Podobnie, w przypadku odpowiedzi '#imie', znak hashtagu jest również zabroniony w nazwach zmiennych. Często początkujący programiści mylą się, myśląc, że mogą używać dowolnych symboli w nazwach zmiennych, co prowadzi do problemów podczas kompilacji czy interpretacji kodu. Ważne jest, aby znać te zasady, ponieważ ich przestrzeganie ułatwia współpracę w zespołach programistycznych oraz zapewnia lepszą organizację kodu. Prawidłowe nazewnictwo sprzyja również łatwiejszej konserwacji i rozwoju projektów, co jest kluczowe w długoterminowych inicjatywach programistycznych.

Pytanie 16

Jaki znacznik HTML umożliwia dynamiczne generowanie grafiki na stronie bez konieczności dodawania dodatkowych plików?

A. <img>
B. <object>
C. <canvas>
D. <embed>
Znaczniki <object>, <embed> oraz <img> są używane do osadzania różnych typów mediów na stronach internetowych, jednak nie służą do dynamicznego generowania grafiki w taki sposób, jak <canvas>. Znak <object> jest przeznaczony do osadzania obiektów multimedialnych, takich jak pliki PDF czy aplikacje Java, ale wymaga, aby te obiekty były dostępne jako zewnętrzne pliki. Podobnie, <embed> umożliwia osadzanie mediów, ale jest bardziej ograniczone w zakresie kontroli nad wyświetlaną grafiką i interaktywnością. Z kolei <img> ma wyłącznie charakter statyczny; służy do wyświetlania obrazów, które są z góry zdefiniowane i nie mogą być modyfikowane w czasie rzeczywistym. Wybór tych znaczników może prowadzić do błędnych założeń, że można osiągnąć podobną funkcjonalność jak w przypadku <canvas>. Użytkownicy często myślą, że wystarczy osadzić plik graficzny, aby uzyskać dynamiczne efekty, jednak tego typu podejście nie pozwala na interakcję, animację czy tworzenie złożonych wizualizacji. Ważne jest, aby zrozumieć, że <canvas> jest przeznaczony do tworzenia grafik w locie, co wymaga umiejętności programowania w JavaScript, a inne znaczniki nie oferują takich możliwości. Dlatego tak istotne jest dobieranie odpowiednich narzędzi do zadań, które chcemy zrealizować na stronie internetowej.

Pytanie 17

Z tabel Klienci oraz Uslugi należy wyodrębnić tylko imiona klientów oraz odpowiadające im nazwy usług, które kosztują więcej niż 10 zł. Kwerenda uzyskująca te informacje ma formę

Ilustracja do pytania
A. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = klienci.id
B. SELECT imie, nazwa FROM klienci, uslugi WHERE cena < 10
C. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = uslugi_id
D. SELECT imie, nazwa FROM klienci JOIN uslugi ON uslugi.id = uslugi_id WHERE cena > 10
Pozostałe odpowiedzi zawierają istotne błędy w składni SQL oraz w interpretacji relacji między tabelami w bazie danych. Odpowiedź używająca WHERE cena < 10 jest błędna, ponieważ warunek ten wybiera usługi tańsze niż 10 zł, co jest sprzeczne z wymogami zadania. Innym błędem jest użycie niepoprawnego połączenia ON bez odpowiedniego dopasowania kluczy. Użycie klauzuli JOIN bez precyzyjnego określenia relacji, jak w przypadku ON uslugi.id = klienci.id, nie odzwierciedla rzeczywistego związku danych, co prowadzi do błędów logicznych w wynikach. Prawidłowe korzystanie z JOIN wymaga zrozumienia struktury bazy danych oraz relacji między tabelami. Właściwe połączanie tabel z wykorzystaniem klucza obcego jest kluczową praktyką, która zapewnia integralność danych i optymalizację zapytań. Ponadto, brak zastosowania warunków filtracyjnych lub nieodpowiednie ich użycie prowadzi do zwracania niekompletnych lub niepoprawnych danych. Wiedza o strukturze bazy danych oraz umiejętność stosowania poprawnych zapytań SQL są niezbędne dla osób zajmujących się projektowaniem i zarządzaniem bazami danych. Praktyczne doświadczenie w stosowaniu tych umiejętności jest kluczowe dla zapewnienia skuteczności oraz wydajności operacji w bazach danych. Poprawne zapytania są podstawą każdej operacji bazodanowej, zarówno w kontekście codziennych operacji, jak i skomplikowanych analiz danych.

Pytanie 18

Witryna internetowa powinna mieć zaprezentowaną strukturę bloków. Aby osiągnąć ten układ, należy przypisać sekcjom odpowiednie właściwości w następujący sposób:

Ilustracja do pytania
A. float wyłącznie dla bloku 5; clear dla bloku 2
B. float tylko dla bloków: 3, 4; clear dla bloku 5
C. float tylko dla bloków: 2, 3, 4; clear dla bloku 5
D. float tylko dla bloku 2; clear dla bloków: 3, 4
Żeby osiągnąć układ, który widzisz w pytaniu, musisz dobrze zrozumieć, jak działają właściwości CSS float i clear. Właściwość float umożliwia przesunięcie elementów w lewo lub w prawo w stosunku do ich kontenera oraz innych elementów. To jest przydatne do tworzenia układów kolumnowych. W tym przypadku bloki 2, 3 i 4 muszą być przesunięte w prawo, żeby ułożyły się obok siebie na poziomie. Blok 2 jest największy i pełni rolę ramki dla pozostałych bloków. Użycie float dla tych bloków daje oczekiwany efekt. Jednak żeby blok 5 znalazł się pod całą strukturą, musisz zastosować clear dla bloku 5. Dzięki temu clear, blok 5 nie będzie otoczony przez inne elementy z float i znajdzie się poniżej. Z mojego doświadczenia, praktyczne wykorzystanie float i clear jest świetne, bo pozwala na tworzenie responsywnych układów bez potrzeby sięgania po bardziej skomplikowane metody jak flexbox czy grid. Choć float nie jest już tak powszechnie stosowany w profesjonalnych projektach, dobrze jest znać jego działanie i ograniczenia, żeby lepiej rozumieć ewolucję CSS oraz móc pracować z kodem, który jeszcze wykorzystuje te klasyczne metody.

Pytanie 19

Zgodnie z zasadami ACID, odnoszącymi się do przeprowadzania transakcji, wymóg trwałości (ang. durability) wskazuje, że

A. transakcja może w pewnych okolicznościach być rozdzielona na dwa niezależne etapy
B. dane zatwierdzone przez transakcję powinny być dostępne niezależnie od tego, co się wydarzy po jej zakończeniu
C. w sytuacji naruszenia spójności bazy danych transakcja eliminuje tabele z kluczami obcymi
D. w trakcie realizacji transakcji dane mogą być zmieniane przez inne transakcje
Wszystkie przedstawione alternatywy nie oddają właściwego znaczenia wymogu trwałości w kontekście ACID. Modyfikowanie danych przez inne transakcje w trakcie trwania jednej transakcji narusza zasadę atomowości, co prowadzi do nieprzewidywalnych stanów danych. Właściwa izolacja transakcji jest niezbędna, aby zapewnić, że jedna transakcja nie wpływa na wyniki innej, co jest kluczowym aspektem stabilności systemu. Ponadto, usunięcie tabel z kluczami obcymi w przypadku naruszenia spójności bazy danych nie jest związane z zasadą trwałości. Tego rodzaju działanie może prowadzić do poważnych problemów z integralnością danych, ponieważ usuwanie tabel nie rozwiązuje problemów spójności, lecz je pogłębia. Dodatkowo, podział transakcji na dwa niezależne etapy może wprowadzać niepożądane skutki, takie jak niespójność danych, co jest sprzeczne z zasadą trwałości. Kluczowym elementem, który łączy wszystkie te błędne koncepcje, jest brak zrozumienia, że trwałość gwarantuje, że zatwierdzone zmiany są permanentne i zabezpieczone przed jakimikolwiek nieprzewidzianymi okolicznościami. Korzystanie z solidnych mechanizmów trwałości, takich jak transakcyjne logowanie i backupy, jest niezbędne, aby zrealizować wszystkie aspekty ACID, a tym samym zapewnić odpowiednią jakość i bezpieczeństwo danych w systemach informacyjnych.

Pytanie 20

Której kwerendy SQL należy użyć, aby utworzyć tabelę samochod z atrybutami marka, model, cena, gdzie marka i model są typu tekstowego, natomiast cena jest liczbą rzeczywistą typu stałoprzecinkowego?

A. CREATE TABLE samochod VALUES (marka CHAR(30), model CHAR(30), cena FLOAT);
B. CREATE TABLE samochod (marka CHAR(30), model CHAR(30), cena DECIMAL(15,2));
C. CREATE TABLE samochod (marka INT(30), model INT(30), cena DECIMAL(2,15));
D. CREATE TABLE samochod VALUES (marka CHAR(30), model CHAR(30), cena DOUBLE);
W niepoprawnych propozycjach odpowiedzi widać kilka typowych nieporozumień związanych z SQL-em i typami danych. Po pierwsze, składnia CREATE TABLE nie używa słowa VALUES do definiowania struktury tabeli. VALUES pojawia się przy wstawianiu danych (INSERT INTO ... VALUES ...), a nie przy tworzeniu tabeli. Jeśli po nazwie tabeli pojawia się VALUES, to jest to od razu czerwone światełko, że ktoś pomieszał tworzenie struktury z wstawianiem rekordów. Z mojego doświadczenia to bardzo częsty błąd u osób, które dopiero zaczynają i próbują intuicyjnie łączyć znane słowa kluczowe. Druga sprawa to dobór typów danych. W zadaniu wyraźnie jest mowa o atrybutach tekstowych dla marka i model. Zastosowanie INT(30) oznacza typ liczbowy całkowity, a nie tekstowy. Nawet jeśli ktoś myśli, że w nawiasie wpisuje się „ilość znaków”, to w przypadku INT(30) tak to nie działa – ten nawias w MySQL ma inne znaczenie (szerokość wyświetlania), a w nowoczesnych wersjach i tak jest ignorowany. Marka samochodu typu „Audi” czy „Toyota” po prostu nie zmieści się w typie liczbowym, bo to nie jest reprezentacja tekstowa. Trzeci istotny błąd dotyczy kolumny cena. Zadanie wymaga liczby rzeczywistej typu stałoprzecinkowego. Typy FLOAT czy DOUBLE są typami zmiennoprzecinkowymi binarnymi, które przechowują przybliżone wartości i mogą wprowadzać drobne błędy zaokrągleń. To jest nieakceptowalne przy pieniądzach, bo kwoty muszą się dokładnie zgadzać co do grosza. Dlatego stosuje się DECIMAL lub NUMERIC, gdzie jawnie podajemy precyzję i skalę, np. DECIMAL(15,2). Odwrócenie tych wartości, jak w DECIMAL(2,15), jest bez sensu w kontekście cen – oznaczałoby maksymalnie dwie cyfry łącznie i piętnaście po przecinku, co w praktyce nie ma zastosowania. Takie konstrukcje biorą się zwykle z mechanicznego wpisywania liczb bez zrozumienia, co oznacza precyzja i skala. Dobra praktyka w branży jest taka, że dla kwot pieniężnych używa się DECIMAL z 2 miejscami po przecinku, ewentualnie 3–4 w specyficznych zastosowaniach, a tekst przechowuje się w typach znakowych, nie liczbowych. Rozumienie tych zasad bardzo ułatwia późniejsze projektowanie sensownych schematów baz danych.

Pytanie 21

Wskaż sposób, w jaki należy odwołać się do pliku default.css, jeśli index.html znajduje się bezpośrednio w katalogu Strona?

Ilustracja do pytania
A. <link rel="stylesheet" type="text/css" href="./style/default.css" />
B. <link rel="stylesheet" type="text/css" href="c:\style/default.css" />
C. <link rel="stylesheet" type="text/css" href="c:/style/default.css" />
D. <link rel="stylesheet" type="text/css" href="...\style\default.css" />
Błędne odpowiedzi w tym pytaniu wynikają z niewłaściwego użycia ścieżek do plików. Dwie z błędnych odpowiedzi sugerują użycie ścieżki bezwzględnej do pliku (rozpoczynającej się od 'c:/' lub 'c:\'), co nie jest zalecane, ponieważ takie ścieżki są specyficzne dla konkretnego systemu plików i mogą nie działać w innych środowiskach. Ponadto jedna z błędnych odpowiedzi sugeruje użycie nieprawidłowej składni ('...\') do odwołania się do pliku. Dobrą praktyką jest zawsze korzystanie ze ścieżek względnych podczas odwoływania się do plików w HTML, ponieważ są one uniwersalne i niezależne od systemu plików. Pamiętaj, że właściwe zarządzanie ścieżkami do plików i organizacja plików w strukturze katalogu to klucz do skutecznego i efektywnego kodowania.

Pytanie 22

Delegacja domeny to

A. utrata okresu ważności domeny z możliwością odnowienia jej.
B. zmiana rejestratora domeny.
C. zmiana nazwy domeny.
D. umieszczenie informacji o zewnętrznych serwerach, które obsługują stronę.
W temacie domen bardzo łatwo pomylić kilka pojęć, bo wszystko dzieje się w podobnych panelach administracyjnych i na pierwszy rzut oka wygląda podobnie. Delegacja domeny nie ma jednak nic wspólnego ze zmianą jej nazwy. Zmiana nazwy oznacza po prostu rejestrację zupełnie innej domeny, np. zamiast moja-firma.pl kupujesz moja-firmka.pl. Technicznie to są dwa różne wpisy w rejestrze, a delegacja zawsze dotyczy jednej, konkretnej zarejestrowanej już nazwy i tego, na jakie serwery DNS jest ona „wskazana”. Częsty błąd myślowy to też łączenie delegacji z przeniesieniem domeny do innego rejestratora. Transfer domeny polega na zmianie firmy, która zarządza Twoją usługą domenową (fakturowanie, panel, obsługa klienta). Możesz przenieść domenę do innego rejestratora bez zmiany delegacji, jak i zmienić delegację bez transferu. To są dwie niezależne operacje, choć użytkownicy często je mylą, bo wykonują je w podobnym momencie, np. przy zmianie hostingu. Kolejna rzecz to okres ważności domeny. Utrata ważności oznacza po prostu wygaśnięcie domeny, czasem z okresem ochronnym, w którym można ją jeszcze odnowić. To też nie jest delegacja. To kwestia opłacenia kolejnego okresu rozliczeniowego u rejestratora i statusu domeny w rejestrze (active, expired, redemption itp.). Delegacja natomiast dotyczy warstwy DNS, czyli tego, gdzie świat ma szukać informacji technicznych o domenie. Te błędne skojarzenia biorą się zwykle z tego, że użytkownik widzi w jednym miejscu: datę ważności, przycisk transferu i pola z serwerami DNS, więc wrzuca to wszystko do jednego worka. W rzeczywistości dobra praktyka jest taka, żeby traktować te obszary osobno: osobno zarządzanie własnością i okresem ważności domeny, osobno wybór rejestratora, a osobno właśnie delegację na odpowiednie serwery DNS, które obsługują stronę, pocztę i inne usługi powiązane z nazwą domenową.

Pytanie 23

Jakie wyniki zostaną wyświetlone po wykonaniu podanej w ramce kwerendy SQL SELECT na tabeli pracownicy, która zawiera rekordy?

idimienazwiskopensja
1AnnaKowalska3400
2MonikaNowak1300
3EwelinaNowakowska2600
4AnnaPrzybylska4600
5MariaKowal2200
6EwaNowacka5400
SELECT SUM(pensja) FROM pracownicy WHERE pensja > 4000;
A. Kwota 19500, czyli suma wszystkich pensji zatrudnionych
B. Dwie kwoty: 4600 oraz 5400, jako wynagrodzenia pracowników przekraczające 4000
C. Kwota 5400, co oznacza najwyższą pensję wśród pracowników
D. Kwota 10000, co stanowi sumę pensji pracowników o id=4 i id=6
W zapytaniu SQL użyto funkcji agregującej SUM, która służy do sumowania wartości w określonej kolumnie. Klauzula WHERE ogranicza zbiór rekordów do tych, które spełniają dany warunek. W tym przypadku, pensja musi być większa niż 4000. Analizując tabelę, znajdujemy dwie osoby z pensjami spełniającymi ten warunek: pracownik o id=4 z pensją 4600 oraz pracownik o id=6 z pensją 5400. SUM(4600 + 5400) daje 10000. Prawidłowe zrozumienie wykorzystania funkcji agregujących w SQL jest kluczowe w analizie danych i raportowaniu. Jest to standardowa praktyka w branży IT, gdzie analiza danych jest podstawą przy podejmowaniu decyzji biznesowych. Funkcje agregujące, takie jak SUM, AVG, MAX, są fundamentalnymi narzędziami analitycznymi w bazach danych. Przy pracy nad większymi zbiorami danych, takie zapytania pomagają szybko uzyskać podsumowania, co jest nieocenione w analizie finansowej czy tworzeniu raportów zarządczych.

Pytanie 24

W języku PHP przeprowadzono operację zaprezentowaną w ramce. Jak można wyświetlić wszystkie rezultaty tego zapytania?

Ilustracja do pytania
A. użyć polecenia mysql_fetch
B. zaindeksować zmienną tab, gdzie tab[0] to pierwsze imię
C. pokazać zmienną $db
D. zastosować pętlę z poleceniem mysqli_fetch_row
Zastosowanie pętli z poleceniem mysqli_fetch_row jest poprawnym rozwiązaniem dla wyświetlenia wyników zapytania w języku PHP. Funkcja mysqli_fetch_row zwraca kolejny wiersz wynikowy jako tablicę liczbową przy każdym wywołaniu. Oznacza to, że aby przetworzyć wszystkie wiersze wyników, należy zastosować pętlę while bądź for, która będzie kontynuować do momentu zwrócenia ostatniego wiersza. Przykładowy kod może wyglądać następująco while ($row = mysqli_fetch_row($tab)) { echo $row[0]; } gdzie $tab to wynik zapytania mysqli_query. Takie podejście pozwala na iteracyjne przetwarzanie każdego wiersza i jest zgodne z branżowymi standardami dotyczącymi pracy z bazami danych w PHP. Dodatkowo mysqli_fetch_row jest bardziej efektywny w przypadku dużych zbiorów danych, ograniczając zużycie pamięci. Jest to zgodne z dobrymi praktykami dotyczącymi przetwarzania dużych zbiorów danych, gdzie operacje powinny być jak najbardziej zoptymalizowane i pamięciooszczędne co ma kluczowe znaczenie w aplikacjach internetowych z dużym obciążeniem.

Pytanie 25

W HTML formularzu użyto elementu <input>. Pole, które się pojawi, ma pozwalać na wprowadzenie maksymalnie

<input type="password" size="30" maxlength="20">
A. 30 znaków, które nie będą widoczne w polu tekstowym
B. 20 znaków, które nie będą widoczne w polu tekstowym
C. 20 znaków, które będą widoczne w trakcie wprowadzania
D. 30 znaków, które będą widoczne podczas wpisywania
Znacznik <input type="password"> w HTML jest rzeczywiście super ważny. Umożliwia on użytkownikom wpisywanie haseł, a to, co najfajniejsze, to że znaki są ukryte, więc nikt nie zobaczy, co piszesz. Atrybut maxlength="20" jest tutaj pomocny, bo ogranicza liczbę znaków do 20, co jest praktyczne - zbyt długie hasła ciężko zapamiętać, a krótkie mogą być niebezpieczne. Natomiast size="30" to tylko kwestia szerokości pola, więc nie wpływa na ilość znaków, które można wpisać. Generalnie, dobrze jest trzymać się tych ograniczeń, bo to pomaga w projektowaniu formularzy i utrzymywaniu porządku w interfejsie. Z mojej perspektywy, znajomość tych atrybutów jest naprawdę przydatna przy tworzeniu stron, bo można lepiej zrozumieć, jak to wszystko działa.

Pytanie 26

Jakie efekt osiągnie się za pomocą przedstawionego formatowania CSS dla nagłówka trzeciego poziomu?

Ilustracja do pytania
A. kolor tekstu będzie pomarańczowy
B. tło będzie w odcieniu szarym
C. tło będzie pomarańczowe
D. kolor tekstu będzie szary
Poprawna odpowiedź dotycząca tła pomarańczowego wynika z zasady specyficzności CSS W przedstawionym przykładzie stylu dla elementu h3 zastosowano właściwość background-color przypisując jej wartość orange bezpośrednio w znaczniku HTML co zwiększa specyficzność takiego stylu nad stylem zdefiniowanym w sekcji style w nagłówku strony Specyficzność w CSS to mechanizm określający który styl ma pierwszeństwo w przypadku konfliktu stylów dla tego samego elementu Styl wbudowany inline ma wyższą specyficzność niż style określone w sekcjach style co oznacza że definiując background-color inline jako orange nadpisuje on wcześniej zdefiniowane style Dzięki temu można precyzyjnie kontrolować wygląd poszczególnych elementów na stronie co jest dobrą praktyką w przypadku gdy konieczne są jednorazowe zmiany stylu dla konkretnego elementu Warto jednak pamiętać że nadmierne wykorzystywanie stylów inline może prowadzić do trudności w zarządzaniu wyglądem całej strony dlatego dobrą praktyką jest używanie ich oszczędnie oraz stosowanie zewnętrznych arkuszy stylów CSS tam gdzie to możliwe

Pytanie 27

W instrukcjach mających na celu odtwarzanie dźwięku na witrynie internetowej jako podkładu muzycznego nie stosuje się atrybutu

A. volume="-100"
B. href="C:/100.wav">
C. balance="-10"
D. loop="10"
Wybór atrybutów, takich jak 'volume="-100"', 'balance="-10"' oraz 'loop="10"', może prowadzić do nieporozumień dotyczących ich zastosowania w kontekście odtwarzania dźwięku na stronach internetowych. Atrybut 'volume', w rzeczywistości, nie jest standardowym atrybutem HTML. Wprowadzenie atrybutu 'volume' z wartością '-100' sugeruje błędne podejście do zarządzania głośnością, gdyż głośność powinna być regulowana w sposób programowy, często przy użyciu JavaScript, aby zapewnić bardziej precyzyjną kontrolę nad poziomem dźwięku. Z kolei 'balance' także nie jest standardowym atrybutem HTML i nie istnieje możliwość bezpośredniego jego zastosowania w tagach HTML dla dźwięku. Aby zrównoważyć dźwięk, należy skorzystać z dedykowanych narzędzi audio w JavaScript lub edytorów audio. Warto również zauważyć, że 'loop="10"' jest błędnym wykorzystaniem atrybutu 'loop', który w HTML działa jako prosty przełącznik, bez możliwości określenia liczby powtórzeń. Przykład wartości boolean 'loop' w tagu <audio> polega na tym, że plik audio będzie powtarzany w nieskończoność, a nie przez 10 razy. Te nieporozumienia mogą prowadzić do rozczarowania wśród deweloperów, jeśli nie są świadomi funkcji i ograniczeń atrybutów HTML. Kluczowe jest zrozumienie, że użycie atrybutów powinno być zgodne z ich przeznaczeniem w standardach HTML, aby zapewnić prawidłowe działanie aplikacji webowych.

Pytanie 28

Gaśnicę oznaczoną literą C stosuje się do gaszenia pożarów

Ilustracja do pytania
A. metali palnych.
B. tłuszczów i olejów kuchennych.
C. cieczy i ciał stałych.
D. gazów palnych.
Prawidłowo – litera C na oznaczeniu gaśnicy oznacza, że jest ona przeznaczona do gaszenia pożarów gazów palnych. W europejskiej klasyfikacji pożarów (PN-EN 2) klasa C obejmuje m.in. takie gazy jak propan, butan, metan, acetylen czy wodór. To są typowe gazy używane w instalacjach gazowych, butlach turystycznych, palnikach, piecach, a także w niektórych procesach technologicznych. W praktyce, przy pożarach klasy C stosuje się najczęściej gaśnice proszkowe lub rzadziej śniegowe (CO₂), ponieważ ich środek gaśniczy nie przewodzi prądu i nie reaguje niebezpiecznie z płonącym gazem. Kluczowa zasada: w przypadku wycieku i zapłonu gazu najpierw, o ile to możliwe, odcina się dopływ gazu (zawór, kurek główny), a dopiero potem dogasza płomień. Gaśnica C nie jest przeznaczona do chłodzenia rozgrzanych elementów konstrukcji, tylko do przerwania reakcji spalania w strefie płomienia. W gaśnicach oznaczonych C środek gaśniczy działa głównie poprzez mechanizm inhibicji łańcuchowej reakcji spalania i odcięcie dopływu tlenu do strefy spalania. Moim zdaniem warto zapamiętać prostą praktyczną rzecz: widzisz literę C – myśl o gazie z butli, instalacji gazowej, palniku. W branżowych szkoleniach BHP i PPOŻ zawsze podkreśla się, żeby nie używać wody do pożarów gazów, bo to jest kompletnie nieskuteczne, a czasem wręcz niebezpieczne. Dlatego dobra znajomość symboli A, B, C, D, F na gaśnicach to podstawa bezpiecznej pracy w każdym obiekcie technicznym, magazynie, warsztacie czy kotłowni.

Pytanie 29

Które z poniższych stwierdzeń na temat klucza głównego jest prawdziwe?

A. W przypadku tabeli z danymi osobowymi może to być pole nazwisko
B. Jest unikalny dla danej tabeli
C. Może przyjmować wyłącznie wartości liczbowe
D. Składa się wyłącznie z jednego pola
Klucz podstawowy to atrybut (lub zbiór atrybutów) w tabeli, który jednoznacznie identyfikuje każdy wiersz w tej tabeli. Jego unikalność w obrębie tabeli jest kluczowa, ponieważ pozwala na zapobieganie duplikatom i zapewnia integralność danych. Na przykład, w tabeli przechowującej informacje o klientach, kolumna z identyfikatorem klienta (np. ID klienta) powinna być kluczem podstawowym, ponieważ każdy klient musi mieć unikalny identyfikator. Standardy baz danych, takie jak model relacyjny, podkreślają znaczenie kluczy podstawowych w zapewnieniu stabilności i efektywności w przechowywaniu danych. Użycie klucza podstawowego również wpływa na wydajność operacji wyszukiwania i łączenia tabel, dlatego w projektowaniu baz danych należy starannie dobierać atrybuty, które będą pełnić tę rolę, aby spełniały wymagania unikalności oraz wydajności.

Pytanie 30

Który atrybut należy dodać do znacznika <video>, aby wyciszyć dźwięk odtwarzanego w przeglądarce filmu?

<video>
    <source src="film.mp4" type="video/mp4">
</video>
A. muted
B. loop
C. autoplay
D. controls
Twoja odpowiedź nie jest poprawna. Wybór atrybutu 'loop', 'autoplay' lub 'controls' nie spowoduje wyłączenia dźwięku filmu. Atrybut 'loop' jest stosowany do zapętlenia odtwarzania filmu, co oznacza, że film będzie odtwarzany ponownie, gdy dojdzie do końca. Atrybut 'autoplay' powoduje, że film zaczyna się odtwarzać automatycznie, jak tylko strona zostanie załadowana. Natomiast atrybut 'controls' dodaje elementy sterujące do filmu, takie jak przyciski do odtwarzania/pauzowania filmu, regulacji głośności, itp. żaden z tych atrybutów nie spowoduje wyłączenia dźwięku. Aby to osiągnąć, należy użyć atrybutu 'muted'. To ważne dla użytkownika, aby miał kontrolę nad dźwiękiem na stronie i aby nie był zaskoczony automatycznym odtwarzaniem dźwięku bez jego zgody. Dobrą praktyką jest domyślne wyłączenie dźwięku, ale pozostawienie użytkownikowi możliwości jego włączenia.

Pytanie 31

Zastosowanie poniższej kwerendy SQL spowoduje usunięcie

DELETE FROM mieszkania WHERE status=1;
A. tabel, w których pole status ma wartość 1, z bazy danych mieszkania
B. tabeli mieszkania z systemu baz danych
C. rekordów, dla których pole status ma wartość 1, z tabeli mieszkania
D. pola o nazwie status w tabeli mieszkania
Patrząc na niepoprawne odpowiedzi, zauważam kilka typowych nieporozumień związanych z tym, jak działają kwerendy SQL. Jedna z odpowiedzi sugeruje, że można usunąć tabelę mieszkania z bazy danych, co jest błędne, bo do tego potrzeba polecenia DROP TABLE, a nie DELETE. To jest zasadnicza różnica! DROP TABLE kasuje całą tabelę, a DELETE tylko pojedyncze rekordy. Kolejny błąd to stwierdzenie, że usuwane jest pole o nazwie status. W rzeczywistości DELETE nie zmienia struktury tabeli ani kolumn; po prostu znika rekord na podstawie wskazanych kryteriów. I jeszcze, że całe tabele będą usunięte, gdzie status wynosi 1 - to też mija się z prawdą. W SQL nie da się usuwać tabeli na podstawie wartości w kolumnach; to działa tylko na danych w tabeli. Te błędy często wynikają z niepełnego zrozumienia, jak różne są operacje na danych i operacje na strukturze bazy. Dlatego ważne jest, aby nauczyć się, jak działają zapytania SQL, bo to pomoże uniknąć takich nieporozumień i skuteczniej zarządzać danymi.

Pytanie 32

Typowym programem przeznaczonym do edycji grafiki wektorowej jest

A. Paint.
B. Inkscape.
C. Audacity.
D. Brasero.
Poprawnie wskazany program to Inkscape, bo jest to typowy, specjalistyczny edytor grafiki wektorowej. Grafika wektorowa opiera się na obiektach takich jak linie, krzywe Béziera, wielokąty, tekst, które są opisane matematycznie (współrzędne, promienie, kąty), a nie na siatce pikseli. Dzięki temu projekty można skalować praktycznie dowolnie bez utraty jakości, co jest absolutnym standardem przy projektowaniu logotypów, ikon, infografik, schematów technicznych czy elementów interfejsu użytkownika. Inkscape obsługuje format SVG, który jest otwartym standardem W3C i jest powszechnie stosowany w projektach webowych, także w responsywnych interfejsach. W praktyce, używając Inkscape, można tworzyć np. logo firmy, które później bez problemu osadzisz na stronie WWW, w materiałach do druku, na banerach, a nawet w aplikacji mobilnej, bez martwienia się o rozmazanie czy pikselizację. Program oferuje warstwy, style, grupowanie obiektów, precyzyjne wyrównywanie, siatki i prowadnice, co jest zgodne z dobrymi praktykami pracy z grafiką: porządek w projekcie, praca na oddzielnych warstwach, używanie krzywych zamiast „ręcznego” rysowania byle jakich kształtów. Moim zdaniem, znajomość Inkscape albo innego edytora wektorowego (np. Adobe Illustrator, CorelDRAW) to dzisiaj podstawowa umiejętność dla kogoś, kto myśli poważnie o grafice komputerowej czy front-endzie. Wiele firm wręcz wymaga, żeby materiały były dostarczane właśnie w formacie wektorowym, bo wtedy łatwiej je modyfikować, dopasowywać kolorystykę do brandingu i eksportować do różnych formatów (PNG, PDF, EPS) w zależności od potrzeb. Inkscape pozwala też na pracę z krzywymi, maskami, gradientami czy efektami filtrów, co daje bardzo duże możliwości przy zachowaniu zalet wektorów.

Pytanie 33

W edytorze grafiki rastrowej funkcja „dodaj kanał alfa” umożliwia

A. wyostrzenie krawędzi obrazu
B. powiększenie głębi ostrości obrazu
C. ustawienie prawidłowego balansu bieli
D. wprowadzenie warstwy z przezroczystością
Dodanie kanału alfa w edytorze grafiki rastrowej to w zasadzie otworzenie drzwi do pracy z przezroczystością w obrazie. Kanał alfa jest dodatkową składową pikseli, która oprócz wartości RGB określa też poziom przejrzystości danego fragmentu grafiki. Moim zdaniem, to jeden z kluczowych elementów, jeśli chcesz przygotować grafikę do profesjonalnych zastosowań, np. do webdesignu, gier czy produkcji materiałów do druku z efektem nakładania. Standardowym przykładem jest sytuacja, gdy przygotowujesz logo i zależy Ci, żeby tło było przezroczyste – wtedy bez kanału alfa ani rusz. W praktyce, po dodaniu kanału alfa możesz wymazywać fragmenty lub stosować selektywne przezroczystości, co daje mnóstwo kreatywnych możliwości. To taka podstawa, bez której ciężko wyobrazić sobie pracę z warstwami, maskami czy efektami blendingu. Z mojego doświadczenia, osoby zaczynające pracę z grafiką często nie zdają sobie sprawy, jak ważne jest świadome zarządzanie przezroczystością – a kanał alfa właśnie to umożliwia. Nawet w najpopularniejszych formatach plików, jak PNG, obsługa kanału alfa jest już praktycznie standardem branżowym. Warto też wiedzieć, że w formatach takich jak JPEG tego nie uzyskasz, bo nie obsługują przezroczystości. Tak więc, jeśli planujesz pracę z grafiką wielowarstwową, przygotowywanie sprite’ów czy nowoczesnych UI, kanał alfa to absolutna podstawa, nie tylko bajer.

Pytanie 34

Jednym z kluczowych identyfikatorów wpisu w bazie danych jest pole

A. relacji
B. klucza obcego
C. klucza podstawowego
D. numeryczne
Klucz podstawowy jest fundamentalnym elementem każdej relacyjnej bazy danych, ponieważ jednoznacznie identyfikuje każdy rekord w tabeli. Jego główną cechą jest unikalność, co oznacza, że żaden z rekordów w tabeli nie może mieć tego samego klucza podstawowego. Klucz podstawowy może składać się z jednego lub więcej atrybutów (kolumn), ale zawsze musi zapewniać jednoznaczność identyfikacji. Przykładem może być tabela 'Użytkownicy', gdzie 'ID_Użytkownika' działa jako klucz podstawowy, pozwalając na łatwe i szybkie wyszukiwanie konkretnych użytkowników. Zgodnie z najlepszymi praktykami projektowania baz danych, klucze podstawowe powinny być stabilne i niezmienne w czasie, aby uniknąć komplikacji związanych z aktualizacją wartości. Klucz podstawowy jest również kluczowy dla relacji między tabelami, ponieważ inne tabele mogą odwoływać się do niego poprzez klucze obce. Dzięki temu, struktura bazy danych staje się bardziej zorganizowana i lepiej znormalizowana, co z kolei prowadzi do zwiększonej wydajności i integralności danych.

Pytanie 35

Jak określa się część strukturalnego języka zapytań, która dotyczy tworzenia zapytań do bazy danych za pomocą polecenia SELECT?

A. SQL DCL (ang. Data Control Language)
B. SQL DQL (ang. Data Query Language)
C. SQL DDL (ang. Data Definition Language)
D. SQL DML (ang. Data Manipulation Language)
Wybór SQL DML, SQL DCL lub SQL DDL jako odpowiedzi na to pytanie wskazuje na nieporozumienie dotyczące funkcji poszczególnych podzbiorów SQL. SQL DML (Data Manipulation Language) odnosi się do poleceń, które modyfikują dane w bazie, takich jak INSERT, UPDATE i DELETE. Myląc te pojęcia, można sądzić, że polecenia te są odpowiednie do pobierania danych, co jest błędne. Z kolei SQL DCL (Data Control Language) służy do zarządzania uprawnieniami użytkowników i kontroli dostępu do danych, co również nie ma związku z formułowaniem zapytań do bazy danych. Na przykład, polecenia GRANT i REVOKE są kluczowe w kontekście DCL, ale nie mają nic wspólnego z wyciąganiem danych. SQL DDL (Data Definition Language) dotyczy definicji struktury bazy danych, czyli tworzenia, modyfikowania i usuwania tabel oraz innych obiektów bazy danych (np. CREATE, ALTER, DROP). Wybór któregokolwiek z tych podzbiorów zamiast DQL wskazuje na brak zrozumienia hierarchii i celów SQL jako całości. Zrozumienie różnic między tymi podzbiorami jest kluczowe dla skutecznego zarządzania danymi i efektywnej pracy z bazami danych. Dobrą praktyką jest zapoznanie się z pełnym zakresem możliwości SQL, aby lepiej wykorzystać jego potencjał w codziennej pracy z danymi.

Pytanie 36

Przedstawione polecenie SQL nadaje użytkownikowi adam@localhost prawa:

GRANT SELECT, INSERT, UPDATE, DELETE ON klienci TO adam@localhost
A. manipulowania danymi bazy danych klienci.
B. zarządzania strukturą tabeli klienci.
C. manipulowania danymi w tabeli klienci.
D. zarządzania strukturą bazy danych klienci.
Niepoprawne odpowiedzi sugerują, że polecenie SQL nadaje użytkownikowi 'adam' z hosta 'localhost' prawa zarządzania strukturą bazy danych lub tabeli 'klienci', co jest niezgodne z prawdą. Zgodnie z konstrukcją polecenia GRANT, użytkownik otrzymuje prawa do manipulowania danymi, a nie do zarządzania strukturą. Zarządzanie strukturą bazy danych lub tabeli obejmuje operacje takie jak CREATE, ALTER, DROP, które pozwalają na tworzenie, modyfikowanie lub usuwanie bazy danych lub tabeli. Te uprawnienia są zazwyczaj zarezerwowane dla administratorów bazy danych i nie są nadawane zwykłym użytkownikom, co jest zgodne z zasadą minimalnych uprawnień dla bezpieczeństwa systemu. Dodatkowo, polecenie nie odnosi się do całej bazy danych 'klienci', tylko do konkretnej tabeli 'klienci'. Tę pomyłkę można zrozumieć, jako nieprawidłowe zrozumienie hierarchii i struktury bazy danych.

Pytanie 37

W języku JavaScript funkcja document.getElementById(id) służy do

A. uzyskania odniesienia do pierwszego elementu HTML o wskazanym id
B. pobierania danych z pola formularza i przypisania ich do zmiennej id
C. umieszczenia tekstu 'id' na stronie WWW
D. sprawdzania poprawności formularza z identyfikatorem id
Zrozumienie funkcji document.getElementById(id) jest fundamentalne dla efektywnej pracy z DOM w JavaScript. Wiele błędnych odpowiedzi na to pytanie wynika z nieporozumień dotyczących podstawowych zasad działania tej metody. Propozycja, że metoda ta sprawdza poprawność formularza o identyfikatorze id, jest nieprawidłowa, ponieważ jej głównym celem nie jest walidacja danych, lecz lokalizacja elementu w dokumencie. Walidacja formularza zwykle realizowana jest za pomocą innych metod, takich jak event listeners, które reagują na interakcje użytkownika. Twierdzenie, że document.getElementById() pobiera dane z pola formularza i wstawia je do zmiennej id, jest także mylące, ponieważ id to atrybut, który wskazuje na element, a nie zmienną do przechowywania wartości. W rzeczywistości, jeśli chcielibyśmy uzyskać wartość pola formularza, musielibyśmy najpierw uzyskać odniesienie do tego elementu, a następnie odczytać jego wartość za pomocą np. element.value. Ostatnia nieprawidłowa koncepcja, czyli wstawienie tekstu o treści 'id' na stronie WWW, również jest błędna, gdyż metoda ta nie wstawia tekstu, a jedynie zwraca odniesienie do elementu. Wskazuje to na powszechne błędy myślowe, gdzie użytkownicy mylą funkcję szukania elementu z funkcjami manipulacji jego zawartością. Zrozumienie tych różnic jest kluczowe w nauce programowania w JavaScript.

Pytanie 38

Atrybut autor w tabeli ksiazka oznacza

CREATE TABLE ksiazka (
  id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  tytul VARCHAR(200),
  autor SMALLINT UNSIGNED NOT NULL,
  CONSTRAINT `dane` FOREIGN KEY (autor) REFERENCES autorzy(id)
);
A. kluczem podstawowym tabeli ksiazka
B. atrybut typu tekstowego zawierający informacje o autorze
C. atrybut używany w relacji z tabelą dane
D. kluczem obcym powiązanym z tabelą autorzy
Pole autor w tabeli ksiazka nie powinno być utożsamiane z kluczem głównym ponieważ klucz główny jest unikalnym identyfikatorem rekordu w tabeli a w tym przypadku tę rolę pełni pole id Klucz główny jest niezbędny do jednoznacznej identyfikacji każdego wiersza co jest fundamentalne dla operacji takich jak aktualizacja czy usuwanie danych Nie jest również polem typu napisowego chociaż jego nazwa mogłaby sugerować zawartość tekstową Pole autor jest zdefiniowane jako SMALLINT co oznacza że przechowuje liczby całkowite i jest używane do przechowywania identyfikatorów autorów w tabeli ksiazka Ponadto nie stanowi pola wykorzystywanego przy relacji z tabelą dane ponieważ to odniesienie było tylko przykładem nazwy constraint w definicji klucza obcego W projektowaniu baz danych istotne jest aby rozumieć różnice pomiędzy typami kluczy oraz ich rolą w strukturze bazy danych Klucze główne i obce pełnią kluczowe role w zarządzaniu relacjami oraz w zachowywaniu integralności danych co jest kluczowe dla utrzymania spójności i niezawodności aplikacji korzystających z tych danych

Pytanie 39

Wskaż zapytanie, które z tabeli klienci wybierze tylko nazwiska trzech najlepszych klientów, czyli tych, którzy mają najwięcej punktów na swoim koncie (pole całkowite punkty)?

A. SELECT nazwisko FROM klienci ORDER BY nazwisko DESC LIMIT 3
B. SELECT LIMIT 3 nazwisko FROM klienci ORDER BY nazwisko DESC
C. SELECT nazwisko FROM klienci LIMIT 3
D. SELECT nazwisko FROM klienci ORDER BY punkty DESC LIMIT 3
Odpowiedzi, które nie prowadzą do poprawnego wyniku, często bazują na niewłaściwym zrozumieniu składni SQL oraz logiki działania kwerend. W pierwszej opcji zastosowano klauzulę LIMIT 3, ale przy wyborze nazwisk z tabeli klienci użyto sortowania po nazwisku zamiast punktach. To podejście prowadzi do niepoprawnego wyniku, gdyż nie uwzględnia kryterium, które jest kluczowe dla określenia najlepszych klientów. W drugiej opcji, kwerenda SELECT nazwisko FROM klienci LIMIT 3 nie zawiera żadnego sortowania, co skutkuje losowym wyborem trzech klientów z tabeli, niezależnie od ich punktów, co jest całkowicie nieadekwatne do zadania. Z kolei w trzeciej propozycji, chociaż zastosowano sortowanie, wybór odbywa się po nazwisku, co nie spełnia wymagania dotyczącego punktów. Typowe błędy myślowe, które mogą prowadzić do takich odpowiedzi, to niepełne zrozumienie funkcji klauzuli ORDER BY oraz roli, jaką odgrywa LIMIT w kontekście selekcji danych. Aby efektywnie operować danymi w SQL, niezbędne jest zrozumienie, jak właściwie formułować zapytania, aby uzyskać oczekiwane wyniki. Praktyka w tworzeniu kwerend, a także znajomość struktury danych, pomagają unikać tych pułapek i pozwalają na skuteczniejsze zarządzanie informacjami w bazach danych.

Pytanie 40

Który typ danych jest przeznaczony do zapisywania daty urodzenia uczniów w bazie danych szkoły?

A. ENUM
B. TIME
C. DATE
D. BLOB
W tym pytaniu kluczowe jest zrozumienie, że data urodzenia jest typową daną kalendarzową i powinna być przechowywana w specjalnym typie datowym, a nie w typach przeznaczonych do zupełnie innych zastosowań. Częsty błąd polega na tym, że ktoś próbuje dobrać typ po nazwie, która brzmi ogólnie znajomo, bez zastanowienia się, jakie operacje będą później wykonywane na tych danych i jakie możliwości daje konkretny typ w SQL. Typ TIME służy do przechowywania samego czasu, najczęściej w formacie godzina:minuta:sekunda, bez informacji o dacie. Jest idealny np. do godzin rozpoczęcia lekcji, planu dzwonków, rejestracji czasu wejścia na lekcję, ale kompletnie nie nadaje się do daty urodzenia, bo w tym przypadku to właśnie dzień, miesiąc i rok są kluczowe, a nie godzina. Gdyby zapisywać datę urodzenia jako TIME, stracilibyśmy całkowicie informację o dacie, a baza nie byłaby w stanie poprawnie obliczyć wieku ucznia czy filtrować po roczniku. Z kolei BLOB to typ binarny, używany do przechowywania surowych danych, takich jak zdjęcia, skany dokumentów, pliki PDF, dźwięki. Z technicznego punktu widzenia dałoby się tam wrzucić cokolwiek, nawet zakodowaną datę, ale byłoby to łamanie wszystkich sensownych zasad projektowania baz danych: brak możliwości sortowania po dacie, brak standardowych funkcji datowych, problem z indeksowaniem, trudne debugowanie. To typ przeznaczony do zupełnie innych zastosowań, np. zdjęcie legitymacyjne ucznia można trzymać w BLOB, ale już jego datę urodzenia absolutnie nie. ENUM natomiast służy do przechowywania jednego z kilku z góry zdefiniowanych tekstowych wariantów, np. płeć, status ucznia, typ klasy. Data urodzenia nie jest zbiorem zamkniętych wartości, tylko ciągłym zakresem dat, więc próba użycia ENUM prowadziłaby do absurdalnej sytuacji definiowania tysiąca możliwych opcji. Typowym błędem myślowym jest tu traktowanie każdej informacji jako zwykłego tekstu lub „opcji z listy”, zamiast korzystać z wyspecjalizowanych typów datowych dostępnych w SQL. Dobre praktyki mówią jasno: do dat używamy DATE (lub pokrewnych typów), do czasu TIME, do plików BLOB, a ENUM tylko tam, gdzie mamy niewielki, stały zestaw opisowych wartości.