Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 12 maja 2026 12:06
  • Data zakończenia: 12 maja 2026 12:07

Egzamin niezdany

Wynik: 14/40 punktów (35,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

Które zapytanie MySQL należy użyć, aby usunąć jedynie pracowników, którzy zarabiają nie mniej niż 500 i nie więcej niż 1000 zł oraz ich miejsce pracy zawiera frazę tx

A. DELETE FROM pracownicy WHERE pensja IN (500,1000) AND miejsce_pracy LIKE '*tx*';
B. DELETE FROM pracownicy WHERE pensja > 500 AND pensja < 1000 AND miejsce_pracy LIKE '%tx%';
C. DELETE FROM pracownicy WHERE pensja BETWEEN 500 AND 1000 AND miejsce_pracy LIKE '%tx%';
D. DELETE FROM pracownicy WHERE pensja BETWEEN 500 AND 1000 OR miejsce_pracy LIKE '%tx%';
Poprawne jest zapytanie: DELETE FROM pracownicy WHERE pensja BETWEEN 500 AND 1000 AND miejsce_pracy LIKE '%tx%';. Słowo kluczowe BETWEEN w SQL oznacza przedział domknięty, czyli w tym przypadku usuwani będą pracownicy, którzy zarabiają co najmniej 500 i jednocześnie nie więcej niż 1000 zł. To dokładnie odpowiada treści zadania, bez żadnych niedomówień na granicach zakresu. Gdybyśmy użyli > i <, to wartości 500 i 1000 zostałyby wykluczone, co w tym zadaniu byłoby niezgodne z wymaganiem. Drugi warunek korzysta z operatora LIKE wraz z maską '%tx%'. Wzorzec z procentami z obu stron oznacza: znajdź wszystkie wiersze, gdzie ciąg znaków „tx” występuje gdziekolwiek w tekście kolumny miejsce_pracy – na początku, w środku albo na końcu. W MySQL znak % jest standardowym symbolem wieloznacznym (wildcard) dla dowolnego ciągu znaków, a nie gwiazdka *, dlatego zapis z % jest poprawny i zgodny z dokumentacją. Spójnik AND jest tu kluczowy, bo warunek mówi wyraźnie: usuwamy tylko tych pracowników, którzy spełniają jednocześnie oba kryteria – zarówno zakres pensji, jak i fragment tekstu w miejscu pracy. W praktyce takie zapytanie stosuje się np. przy porządkowaniu danych testowych: można szybko usunąć sztuczne rekordy z określonego przedziału płac i z wybranych lokalizacji. Moim zdaniem warto wyrabiać sobie nawyk bardzo precyzyjnego formułowania warunków logicznych (AND/OR) i zawsze sprawdzać, czy zakres jest domknięty czy otwarty. Dobrą praktyką jest też najpierw wykonać SELECT z tym samym WHERE, zobaczyć jakie rekordy zostaną naruszone, a dopiero potem odpalać DELETE – szczególnie na produkcyjnej bazie, bo tam pomyłki bywają bolesne.

Pytanie 2

Jaki zapis w języku C++ definiuje komentarz jednoliniowy?

A. #
B. //
C. <
D. /*
Wybór błędnych odpowiedzi może wynikać z nieporozumienia dotyczącego składni komentarzy w języku C++. Zapis < nie jest poprawnym sposobem na oznaczanie komentarzy i nie ma związku z żadnym standardem C++. Jest to najprawdopodobniej pomyłka wynikająca z nieznajomości notacji języków programowania. Z kolei /* jest częścią zapisu komentarzy wieloliniowych, który rozpoczyna komentarz, a jego zakończenie wymaga użycia */. Komentarze wieloliniowe są użyteczne w sytuacjach, gdy potrzebujemy dodać dłuższe opisy lub uwagi, ale nie są one odpowiednie do jednozdaniowych opisów, jak w przypadku komentarzy jednoliniowych. Zapis # również nie jest poprawny w kontekście standardowego C++. Jest to składnia stosowana w języku Python do definiowania komentarzy, co może prowadzić do błędnych wniosków na temat składni w C++. Warto zauważyć, że używanie niepoprawnych notacji może prowadzić do nieczytelności kodu i trudności w jego późniejszym utrzymaniu. Komentarze powinny być używane rozważnie i zgodnie z ich przeznaczeniem, aby skutecznie wspierały zrozumienie kodu, a nie wprowadzały zamieszania.

Pytanie 3

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

A. ALTER TABLE pracownicy ADD miejscowosc VARCHAR(100);
B. ALTER TABLE pracownicy ADD miejscowosc FLOAT(2);
C. ALTER TABLE pracownicy DROP COLUMN miejscowosc;
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 4

Utworzono bazę danych z tabelą mieszkańcy, która zawiera pola: nazwisko, imię oraz miasto. Następnie przygotowano poniższe zapytanie do bazy:
SELECT nazwisko, imie FROM mieszkańcy WHERE miasto='Poznań' UNION ALL SELECT nazwisko, imie FROM mieszkańcy WHERE miasto='Kraków';
Wskaż zapytanie, które zwróci takie same dane.

A. SELECT nazwisko, imie FROM mieszkańcy WHERE miasto HAVING 'Poznań' OR 'Kraków';
B. SELECT nazwisko, imie FROM mieszkańcy WHERE miasto BETWEEN 'Poznań' OR 'Kraków';
C. SELECT nazwisko, imie FROM mieszkańcy AS 'Poznań' OR 'Kraków';
D. SELECT nazwisko, imie FROM mieszkańcy WHERE miasto='Poznań' OR miasto='Kraków';
Wybór błędnych odpowiedzi wynika z nieprawidłowego zrozumienia podstawowych zasad użycia operatorów w SQL oraz sposobu, w jaki warunki filtracji danych powinny być konstruowane. Zapytanie, które wykorzystuje BETWEEN, jest stosowane do porównywania wartości w określonym zakresie, ale w tym przypadku nie jest możliwe wskazanie dwóch różnych wartości, jak w przypadku miast. Operator OR w kontekście BETWEEN nie ma zastosowania, co sprawia, że ta koncepcja jest fundamentalnie błędna. Z drugiej strony, użycie HAVING jest niewłaściwe, ponieważ służy do filtrowania wyników po agregacji danych, a nie do bezpośredniej filtracji na podstawie wartości. Dodatkowo, konstrukcja SELECT z aliasem 'Poznań' OR 'Kraków' jest syntaktycznie niepoprawna, ponieważ operator OR nie może być użyty w tym kontekście. Typowym błędem w myśleniu jest mylenie operatorów logicznych i ich zastosowania w różnych kontekstach zapytań SQL. Zrozumienie, kiedy używać WHERE, HAVING oraz jak działa składnia zapytań, jest kluczowe dla poprawnego pisania i optymalizacji zapytań baz danych.

Pytanie 5

Jakiego elementu w języku HTML brakuje, aby walidator HTML zgłosił ostrzeżenie lub błąd?

A. przynajmniej jednego <h1>
B. <link>
C. <title>
D. <meta name="author" content=". . . .">
Odpowiedzi związane z elementami <link>, przynajmniej jednym <h1> oraz <meta name="author" content="..."> mogą wydawać się istotne w kontekście tworzenia strony internetowej, jednak nie są one obowiązkowe dla poprawnej walidacji dokumentu HTML. Element <link> jest używany do łączenia dokumentu HTML z zewnętrznymi zasobami, takimi jak arkusze stylów CSS, ale jego brak nie powoduje błędów walidacyjnych. W przypadku <h1>, jest to istotny element struktury nagłówków w HTML, ale nie ma wymogu, aby na stronie znajdował się przynajmniej jeden taki element. Choć warto stosować nagłówki do hierarchizacji treści, ich brak nie skutkuje ostrzeżeniem. Z kolei element <meta name="author"> dostarcza informacji o autorze strony, ale również nie jest obowiązkowy dla walidacji HTML. Nieprawidłowe podejście do wnioskowania o znaczeniu tych elementów może prowadzić do błędnych założeń o ich krytycznej roli w strukturze HTML. Ważne jest, aby zrozumieć, że standardy HTML definiują zasady walidacji, a element <title> jest jednym z nielicznych, które są uznawane za obligatoryjne w każdym dokumencie. Zrozumienie tych zasad pozwala na lepsze projektowanie stron, które są zgodne z najlepszymi praktykami oraz wymaganiami SEO.

Pytanie 6

Celem testów wydajnościowych jest ocena

A. poziomu spełnienia wymagań dotyczących wydajności przez system bądź moduł
B. możliwości oprogramowania do funkcjonowania w warunkach błędnej pracy sprzętu
C. możliwości oprogramowania do funkcjonowania w warunkach niewłaściwej pracy systemu
D. sekwencji zdarzeń, w której prawdopodobieństwo wystąpienia każdego zdarzenia zależy wyłącznie od wyniku zdarzenia poprzedniego
Testy wydajnościowe są kluczowym elementem procesu zapewnienia jakości oprogramowania, mającym na celu ocenę, w jakim stopniu system lub moduł spełnia określone wymagania wydajnościowe. Zazwyczaj obejmują one pomiar czasu reakcji, przepustowości, obciążenia oraz skalowalności aplikacji w różnych warunkach użytkowania. Przykładowo, podczas testów wydajnościowych można symulować równoczesne połączenia użytkowników, aby ocenić, jak system zachowuje się pod dużym obciążeniem. Dobre praktyki w tej dziedzinie, takie jak przeprowadzanie testów w kontrolowanym środowisku oraz stosowanie narzędzi takich jak JMeter czy LoadRunner, pozwalają na uzyskanie wiarygodnych wyników. Prawidłowe przeprowadzenie testów wydajnościowych jest istotne nie tylko dla spełnienia oczekiwań klientów, ale także dla uniknięcia problemów z wydajnością po wdrożeniu systemu na rynek, co może prowadzić do utraty reputacji firmy oraz finansowych strat.

Pytanie 7

Funkcja agregująca MIN w języku SQL ma na celu obliczenie

A. liczby wierszy, które zwraca kwerenda
B. ilości znaków w rekordach zwróconych przez kwerendę
C. średniej wartości różnych pól w rekordu zwróconego przez zapytanie
D. minimalnej wartości kolumny, która jest wynikiem kwerendy
Wszystkie trzy pozostałe odpowiedzi nie są właściwe w kontekście funkcji agregującej MIN. Funkcja ta nie ma na celu zliczania liczby wierszy zwróconych przez kwerendę; zamiast tego służy do obliczania minimalnej wartości w danej kolumnie. Zliczanie wierszy to zadanie dla funkcji COUNT, która zwraca liczbę rekordów spełniających określone kryteria. Kolejnym błędnym stwierdzeniem jest, że funkcja MIN może obliczać długość znaków w zwróconych rekordach. Długość znaków to kwestia związana z funkcjami takimi jak LEN w SQL, które mierzą długość ciągów znakowych, jednak nie mają one związku z funkcją agregującą MIN. Ostatnia z błędnych odpowiedzi, dotycząca obliczania średniej wartości różnych pól rekordu, również nie jest zgodna z definicją funkcji MIN. Średnia jest obliczana przy użyciu funkcji AVG, która sumuje wartości w danej kolumnie i dzieli je przez liczbę tych wartości. W związku z tym, funkcja MIN jest jedynie odpowiedzialna za wydobycie najniższej wartości z zestawu danych, co jest kluczowe w wielu analizach, ale nie obejmuje ona żadnych z wymienionych w odpowiedziach zadań.

Pytanie 8

Który z wymienionych formatów umożliwia zapisanie materiału wideo z towarzyszącą ścieżką dźwiękową?

A. MP4
B. WAV
C. AAC
D. WMA
WMA, WAV i AAC to formaty audio, które nie są przeznaczone do przechowywania materiałów wideo w połączeniu z dźwiękiem. WMA (Windows Media Audio) jest formatem audio opracowanym przez firmę Microsoft, który koncentruje się głównie na kompresji dźwięku, a nie na integracji wideo. Użytkownicy mogą mylić go z formatami video, jednak WMA służy tylko do audio. Z kolei WAV (Waveform Audio File Format) to format audio, który przechowuje dźwięk w postaci nieskompresowanej lub minimalnie skompresowanej, co prowadzi do dużych rozmiarów plików i brak możliwości przechowywania obrazu. Jego głównym zastosowaniem są profesjonalne nagrania audio, a nie multimedia wideo. AAC (Advanced Audio Codec) to kodek audio, który jest często używany w ramach kontenerów multimedialnych, takich jak MP4, ale sam w sobie nie jest formatem kontenerowym dla wideo. Często używany w strumieniowaniu dźwięku, AAC dostarcza wysoką jakość dźwięku przy niskich bitratów, ale nie obejmuje funkcji przechowywania wideo. Użytkownicy mogą pomylić te formaty, zakładając, że są one odpowiednie do pracy z wideo, jednak żaden z nich nie spełnia wymagań potrzebnych do zapisu pełnoprawnych plików wideo z dźwiękiem, co podkreśla znaczenie wyboru odpowiedniego formatu w kontekście produkcji multimedialnej.

Pytanie 9

Używając polecenia BACKUP LOG w MS SQL Server, można

A. przeglądać komunikaty wygenerowane w trakcie tworzenia kopii
B. wykonać całkowitą kopię zapasową
C. wykonać kopię zapasową dziennika transakcji
D. połączyć się z kopią zapasową
Pierwsza odpowiedź sugeruje, że polecenie BACKUP LOG może być użyte do wykonania pełnej kopii bezpieczeństwa bazy danych. W rzeczywistości, pełna kopia bezpieczeństwa jest realizowana za pomocą polecenia BACKUP DATABASE, które zgrywa całą bazę danych, w tym wszystkie obiekty i dane. BACKUP LOG dotyczy jedynie dziennika transakcyjnego, co oznacza, że nie jest to odpowiednia odpowiedź. Druga odpowiedź sugeruje, że można zalogować się do kopii bezpieczeństwa, co jest konceptualnie niepoprawne. Kopie zapasowe są plikami, które można przywrócić, ale nie oferują bezpośredniego dostępu do bazy danych. Użytkownik nie może zalogować się do backupu, dopóki nie zostanie przywrócony do instancji SQL Server. Wreszcie, trzecia odpowiedź sugeruje, że BACKUP LOG pozwala na przeczytanie komunikatów wygenerowanych podczas tworzenia kopii. W rzeczywistości, przy tworzeniu kopii zapasowych, komunikaty są rejestrowane w logach serwera, a polecenie BACKUP LOG nie służy do ich przeglądania. Można je jednak monitorować przy pomocy narzędzi do zarządzania SQL Server lub poprzez odpowiednie zapytania do systemowych tabel logów. Dlatego wszystkie te odpowiedzi są błędne w kontekście polecenia BACKUP LOG.

Pytanie 10

Deklaracja

<!DOCTYPE html>
informuje przeglądarkę internetową o:
A. wersji języka HTML zastosowanej w dokumencie strony internetowej.
B. indeksowaniu strony internetowej na potrzeby pozycjonowania witryny.
C. tytule strony internetowej.
D. dostosowaniu strony internetowej do różnych rozmiarów urządzeń.
Deklaracja <!DOCTYPE html> bywa często lekceważona, bo wydaje się tylko jakimś tajemniczym napisem na samej górze pliku. Przez to wiele osób przypisuje jej funkcje, których w ogóle nie pełni. Warto to uporządkować, bo zrozumienie roli DOCTYPE ma duże znaczenie przy profesjonalnym tworzeniu stron WWW. Przede wszystkim DOCTYPE nie ma nic wspólnego z tytułem strony. Tytuł ustawia się w elemencie <title> wewnątrz sekcji <head>, np. <title>Moja strona</title>. To właśnie ta wartość jest wyświetlana na karcie przeglądarki i używana przez wyszukiwarki jako tytuł wyniku. Deklaracja <!DOCTYPE html> nie zawiera żadnych informacji tekstowych dla użytkownika ani dla SEO. Częsty błąd to też kojarzenie DOCTYPE z responsywnością i dostosowaniem strony do różnych rozmiarów urządzeń. Za zachowanie na urządzeniach mobilnych odpowiada głównie meta-tag viewport, np. <meta name="viewport" content="width=device-width, initial-scale=1.0">, oraz odpowiednio napisane reguły CSS (media queries, elastyczne siatki, jednostki procentowe, rem, vw itp.). DOCTYPE jedynie włącza nowoczesny tryb renderowania, ale sam z siebie nie sprawia, że strona jest „mobile-friendly”. To już zadanie dla projektanta front-endu. Nie można też wiązać DOCTYPE z indeksowaniem strony przez wyszukiwarki. Roboty Google czy innych wyszukiwarek bazują na treści, strukturze semantycznej, linkach, meta-opisach, szybkości ładowania, danych strukturalnych i wielu innych czynnikach. Obecność poprawnego DOCTYPE jest mile widziana ze względu na standardy i poprawny rendering, ale nie jest to znacznik, który mówi: „indeksuj tę stronę” albo „pozycjonuj ją wyżej”. Takie myślenie to typowy skrót: skoro coś jest na samej górze, to musi być ważne dla SEO – a tutaj to po prostu nie jest prawda. Rzeczywista funkcja deklaracji <!DOCTYPE html> polega na poinformowaniu przeglądarki, jaką specyfikację HTML ma stosować przy interpretacji dokumentu. Współcześnie jest to HTML5. Dzięki temu przeglądarka przechodzi w tzw. standard mode i korzysta z aktualnych reguł parsowania, co wpływa na spójność działania CSS i HTML w różnych silnikach. To jest fundament poprawnego renderowania, ale zupełnie inny obszar niż tytuł strony, responsywność czy pozycjonowanie. Z mojego doświadczenia wynika, że kiedy ktoś myli rolę DOCTYPE, później ma problemy z diagnozowaniem, czemu strona zachowuje się inaczej, niż się spodziewa – bo szuka przyczyn nie tam, gdzie trzeba.

Pytanie 11

W sekcji <head> (w elemencie <meta ... >) witryny www nie umieszcza się danych dotyczących

A. kodowania
B. automatycznego odświeżania
C. typu dokumentu
D. autora
W znaczniku <head> strony internetowej umieszczamy różne metadane, które wpływają na zachowanie strony oraz jej pozycjonowanie w wyszukiwarkach. Informacja o typie dokumentu jest określana w deklaracji DOCTYPE, a nie w sekcji <meta>. Typ dokumentu informuje przeglądarki, jakiego standardu HTML używa dana strona, co jest kluczowe dla prawidłowego renderowania zawartości. Z kolei w sekcji <meta> umieszczamy dane takie jak autor strony, kodowanie znaków, które informuje przeglądarkę o użytej technologii tekstowej, oraz meta tagi służące do automatycznego odświeżania strony. Przykładowo, używając meta tagu <meta http-equiv='refresh' content='30'>, możemy ustawić, aby strona odświeżała się co 30 sekund. Właściwe wykorzystanie sekcji <head> poprawia zarówno doświadczenia użytkowników, jak i SEO, dlatego znajomość tych elementów jest fundamentalna dla każdego twórcy stron internetowych.

Pytanie 12

Jak można utworzyć kopię zapasową bazy danych MySQL?

A. importowaniem bazy
B. modyfikowaniem danych
C. eksportowaniem bazy
D. agregowaniem danych
Eksport bazy danych MySQL to proces, który pozwala na tworzenie kopii zapasowych danych znajdujących się w bazie. Narzędzie do eksportu, takie jak mysqldump, umożliwia nie tylko zapisanie danych w formacie SQL, ale także w innych formatach, takich jak CSV czy JSON. Eksport jest kluczowy w przypadku migracji danych pomiędzy różnymi środowiskami baz danych lub w sytuacji, gdy zachodzi potrzeba odzyskania danych po awarii. Proces ten można zautomatyzować, korzystając z harmonogramów zadań (cron), co zapewnia regularne tworzenie kopii zapasowych. Zgodnie z najlepszymi praktykami, zaleca się, aby eksportować bazy danych regularnie oraz przechowywać kopie zapasowe w bezpiecznych lokalizacjach, aby zminimalizować ryzyko utraty danych. Standardy takie jak ISO 27001 podkreślają znaczenie odpowiednich procedur zarządzania danymi, w tym tworzenia kopii zapasowych, co czyni eksportu kluczowym elementem strategii ochrony danych w organizacjach.

Pytanie 13

Wykres słupkowy należy zapisać w formacie rastrowym tak, aby jakość jego krawędzi była jak najlepsza, również dla dużego powiększenia, unikając efektu aliasingu. Do tego celu można zastosować format

A. PNG
B. CDR
C. SVG
D. JPEG
Analizując dostępne możliwości, łatwo się pogubić między formatami rastrowymi a wektorowymi, bo w praktyce często mieszają się te pojęcia. Format JPEG mimo swojej popularności w fotografii zupełnie nie nadaje się do wykresów słupkowych – kompresja stratna silnie degraduje jakość ostrych krawędzi i tekstów, przez co nawet lekko powiększony wykres wygląda nieestetycznie, pojawiają się brzydkie artefakty, rozmycia czy wręcz fragmentacja kolorów. To powszechny błąd, że JPEG jest uniwersalny – tak naprawdę sprawdza się tylko przy zdjęciach i obrazach z płynnymi przejściami kolorów. Z kolei SVG to już zupełnie inna liga, bo to format wektorowy. W nim krawędzie są zawsze idealnie ostre nawet przy dowolnym powiększeniu, bo są opisane matematycznie, a nie jako siatka pikseli. Problem w tym, że pytanie dotyczyło formatu rastrowego, więc SVG – choć fantastyczny do wykresów – nie spełnia tego warunku. CDR, czyli CorelDRAW, to natomiast format projektu wektorowego, popularny raczej w poligrafii i druku, a nie w codziennym zapisie wykresów do prezentacji czy publikacji elektronicznych. Pliki CDR są niekompatybilne z większością standardowych przeglądarek czy edytorów graficznych i wymagają specjalistycznego oprogramowania, więc to raczej ślepy zaułek. Wiele osób nie odróżnia również pojęcia aliasingu – czyli poszarpanych krawędzi w grafice rastrowej – od rozmycia czy utraty jakości wynikającej ze złego formatu. PNG jako jedyny z wymienionych formatów rastrowych umożliwia uzyskanie bardzo ostrych krawędzi, a przy zachowaniu wysokiej rozdzielczości pozwala niemal całkowicie uniknąć efektu aliasingu. Moim zdaniem to jeden z tych tematów, gdzie praktyka bardzo szybko weryfikuje teorię i wybierając PNG, po prostu nie ma się później problemów z jakością czy kompatybilnością. Trzeba pamiętać, że dobór formatu ma ogromny wpływ na ostateczną prezentację danych, dlatego nie warto iść na skróty, tylko dobrać narzędzie do konkretnego celu.

Pytanie 14

Zakładając, że tablica $tab zawiera liczby naturalne, co program wyświetli?

$liczba = $tab[0];
foreach ($tab as $element)
{
  if ($element > $liczba)
    $liczba = $element;
}
echo $liczba;
A. elementy, które przewyższają zmienną $liczba
B. najmniejszy element tablicy
C. największy element tablicy
D. element tablicy o wartości $tab[0]
Niepoprawne odpowiedzi wynikają z nieporozumień dotyczących działania pętli iteracyjnej oraz logiki porównywania i aktualizowania wartości. Propozycja wyboru najmniejszego elementu tablicy jest błędna, ponieważ w programie brakuje mechanizmu do aktualizacji zmiennej $liczba na mniejszą wartość, co jest kluczowym wymogiem w tym kontekście. Pętla foreach z warunkiem if sprawia, że zmienna $liczba zwiększa swoją wartość tylko wtedy, gdy znajdzie się element większy od aktualnie przechowywanej wartości, eliminując tym samym możliwość identyfikacji najmniejszego elementu. Z kolei opcja dotycząca wypisania elementów większych od zmiennej $liczba również jest nietrafiona, ponieważ program nie zawiera żadnej instrukcji wypisującej takie elementy na ekran, a jedynie aktualizuje zmienną w celu znalezienia największej wartości. Taka funkcjonalność wymagałaby dodatkowej logiki, która przechowywałaby i obsługiwała wiele większych elementów, co nie jest realizowane w obecnym kodzie. Wreszcie, pomysł, że program wypisuje element równy $tab[0], również nie jest poprawny. Chociaż zmienna $liczba jest inicjalizowana wartością $tab[0], to jednak ulega ona zmianom w trakcie iteracji przez tablicę, jeśli znajdzie się większy element, a więc w większości przypadków nie kończy z wartością początkową. Zrozumienie tych mechanizmów jest kluczowe w projektowaniu efektywnego kodu i unikaniu nieporozumień w implementacji algorytmów operujących na zbiorach danych.

Pytanie 15

Jakie jest znaczenie powtarzania w zdefiniowanym stylu CSS?

body {
  background-image: url("rysunek.gif");
  background-repeat: repeat-y;
}
A. obrazu umieszczonego w tle strony w poziomie
B. tła każdego z paragrafów
C. obrazu umieszczonego przy użyciu znacznika img
D. obrazu umieszczonego w tle strony w pionie
Odpowiedź dotycząca powtarzania rysunku umieszczonego w tle strony w pionie jest prawidłowa ponieważ w załączonej definicji stylu CSS użyto właściwości background-repeat z wartością repeat-y Wartość ta oznacza że obrazek tła będzie powtarzał się tylko w kierunku pionowym natomiast w kierunku poziomym pozostaje pojedynczym obrazem Funkcja ta jest szczególnie przydatna gdy chcemy stworzyć efekt kontynuacji wzoru lub tekstury na całej wysokości strony ale nie potrzebujemy powtarzania w poziomie Dzięki takim właściwościom CSS jak background-image i background-repeat projektanci stron internetowych mają dużą elastyczność w rozmieszczaniu i stylizacji tła Co więcej pozwala to na optymalizację zasobów w przypadku gdy używane są małe pliki graficzne które zajmują mniej miejsca na serwerze niż duże obrazy Zrozumienie tych mechanizmów jest kluczowe dla tworzenia efektywnych i estetycznych projektów zgodnych z dobrymi praktykami branżowymi takimi jak unikanie zbędnych powtórzeń w wyglądzie strony i dostosowywanie się do różnorodnych rozdzielczości ekranów

Pytanie 16

W tabeli samochody w bazie danych, pole kolor może przyjmować jedynie wartości zdefiniowane w słowniku lakier. Jaką kwerendę należy wykorzystać, aby ustanowić relację między tabelami samochody a lakier?

A. ALTER TABLE samochody ADD FOREIGN KEY (barwa) REFERENCES samochody(kolor);
B. ALTER TABLE samochody ADD FOREIGN KEY (kolor) REFERENCES lakier(lakierId);
C. ALTER TABLE samochody ADD FOREIGN KEY kolor REFERENCES lakier;
D. ALTER TABLE samochody ADD FOREIGN KEY barwa REFERENCES samochody.lakier;
Aby połączyć tabele 'samochody' i 'lakier' za pomocą klucza obcego, należy zastosować kwerendę ALTER TABLE samochody ADD FOREIGN KEY (kolor) REFERENCES lakier(lakierId);. W tym przypadku 'kolor' w tabeli 'samochody' odnosi się do identyfikatora 'lakierId' w tabeli 'lakier', co zapewnia integralność referencyjną między tymi dwoma tabelami. Klucz obcy jest mechanizmem, który pozwala na zapewnienie, że wartości w kolumnie 'kolor' w tabeli 'samochody' muszą odpowiadać wartościom w kolumnie 'lakierId' w tabeli 'lakier', co zapobiega wprowadzeniu danych, które nie mają odpowiednika w tabeli 'lakier'. Przykładowo, jeżeli próbujemy dodać samochód w kolorze, który nie istnieje w tabeli 'lakier', system nie pozwoli na to działanie. Taka struktura bazy danych jest zgodna z zasadami normalizacji, która ma na celu eliminację redundancji danych oraz zwiększenie ich spójności. Stosowanie kluczy obcych jest standardem w projektowaniu relacyjnych baz danych, ponieważ ułatwia zarządzanie danymi oraz ich integralność.

Pytanie 17

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. W instrukcji switch w wyrażeniu case nie dostosowano zapisu wartości do typu zmiennej x.
B. Nie zastosowano wyrażenia default.
C. Nie zastosowano instrukcji break.
D. Wartość zmiennej x nie została zdefiniowana przed instrukcją switch.
Prawda jest taka, że zastosowanie wyrażenia default, definicja zmiennej x przed instrukcją switch oraz użycie instrukcji break nie wpływają na wyświetlenie alertu w omawianym kodzie JavaScript. Wyrażenie default w instrukcji switch służy jako gwarancja wykonania bloku kodu, gdy żaden z przypadków nie pasuje do wyrażenia switch, ale jego brak nie jest przyczyną niepojawienia się alertu. Co więcej, zmienna x jest zdefiniowana przed instrukcją switch, co jest zgodne z zasadami JavaScript. Instrukcja break służy do zakończenia pętli lub instrukcji switch i przeniesienia wykonania do następnej instrukcji po instrukcji switch lub pętli, ale nie ma ona wpływu na porównanie typów danych w instrukcji case. Rzeczywistym powodem, dla którego alert nie jest wyświetlany, jest fakt, że JavaScript używa tzw. 'strict comparison' w instrukcji case, porównując zarówno wartość, jak i typ danych, a typy danych liczby 10 i ciągu znaków '10' są różne. Dlatego jest istotne, ażeby zawsze zwracać uwagę na typy danych podczas korzystania z instrukcji switch i case w JavaScript.

Pytanie 18

Który z modyfikatorów określa opisany w ramce przypadek? Metoda i zmienna są dostępne wyłącznie dla innych metod tej samej klasy

A. private
B. public
C. static
D. protected
Modyfikator 'private' w języku programowania, takim jak Java czy C#, oznacza, że dana metoda lub zmienna jest dostępna wyłącznie wewnątrz własnej klasy. Oznacza to, że nie można uzyskać dostępu do tych elementów z zewnątrz klasy, co zwiększa bezpieczeństwo i hermetyzację kodu. Przykład zastosowania: jeśli masz klasę 'Samochód', a w niej prywatną metodę 'uruchomSilnik()', to można ją wywołać jedynie z innych metod tej samej klasy, takich jak 'jedź()' lub 'stop()'. Dzięki temu możesz mieć pewność, że mechanizmy sterujące silnikiem nie będą modyfikowane z zewnątrz, co może prowadzić do nieprzewidywalnych zachowań. Oprócz tego, stosowanie modyfikatora 'private' jest zgodne z zasadą enkapsulacji, co jest jedną z fundamentalnych zasad programowania obiektowego. Zaleca się używanie 'private' dla tych elementów, które nie powinny być dostępne dla innych części programu, co pozwala na lepsze zarządzanie kodem i jego testowalność.

Pytanie 19

W języku CSS zdefiniowano styl. Sformatowana stylem sekcja będzie zawierała obramowanie o szerokości

div { border: solid 2px blue;
    margin: 20px;             }
A. 2 px oraz marginesy wewnątrz tego obramowania.
B. 20 px oraz marginesy wewnątrz tego obramowania.
C. 2 px oraz marginesy na zewnątrz tego obramowania.
D. 20 px oraz marginesy na zewnątrz tego obramowania.
Wygląda na to, że niepoprawnie zrozumiałeś, jak działają obramowania i marginesy w CSS. W tym języku obramowanie (border) i margines (margin) to dwie różne typy przestrzeni, które możemy zdefiniować wokół elementu. Obramowanie jest linią otaczającą element, natomiast margines to przestrzeń między obramowaniem a następnym elementem. Marginesy są zawsze na zewnątrz obramowania, nie wewnątrz. Powiedzenie, że margines jest 'wewnątrz' obramowania, to fundamentalne nieporozumienie dotyczące tego, jak te dwie właściwości działają. Poza tym, szerokość obramowania została zdefiniowana jako 2 piksele, a nie 20. To może być łatwo pomylone, ale pamiętaj, że w CSS jednostki są ważne i mogą znacząco wpływać na wygląd strony. W praktyce, szczegółowe zrozumienie obramowania i marginesów jest kluczowe do precyzyjnego ułożenia elementów na stronie internetowej.

Pytanie 20

W SQL polecenie INSERT INTO służy do

A. zmiany rekordów na wskazaną wartość
B. dodawania danych do tabeli
C. wprowadzania nowych pól do tabeli
D. tworzenia nowej tabeli
Wprowadzenie do polecenia INSERT INTO często prowadzi do nieporozumień, szczególnie w kontekście funkcji, jakie pełni w SQL. Nieodpowiednie rozumienie tego polecenia może skutkować błędami w projektowaniu baz danych oraz w wykonywaniu operacji na danych. Na przykład, stwierdzenie, że INSERT INTO aktualizuje rekordy, jest nieprecyzyjne. W rzeczywistości, do aktualizacji istniejących danych używa się polecenia UPDATE, które zmienia wartości w określonych rekordach na podstawie podanych kryteriów. Ponadto, w SQL nie można dodawać nowych pól do tabeli za pomocą INSERT INTO; do tego służy polecenie ALTER TABLE. To ostatnie jest niezbędne, gdyż pozwala na modyfikację struktury tabeli, co jest kluczowe w przypadku zmieniających się wymagań aplikacji. Podobnie, stwierdzenie, że INSERT INTO dodaje tabelę, jest również błędne, ponieważ do tego używa się polecenia CREATE TABLE. Ważne jest, aby zrozumieć, że różne polecenia SQL mają swoje specyficzne zastosowania i nie można ich ze sobą mylić. Typowe błędy myślowe w tym zakresie mogą wynikać z nieznajomości języka SQL lub z braku zrozumienia różnicy pomiędzy operacjami na danych a operacjami na strukturze bazy danych. Zrozumienie tych podstawowych różnic jest kluczowe dla efektywnego zarządzania danymi oraz dla poprawnego projektowania baz danych.

Pytanie 21

Jakiego rodzaju oprogramowanie narzędziowe jest wymagane, aby użytkownik mógł przeprowadzać operacje na zebranych danych?

A. Otwarty mechanizm komunikacji bazy danych
B. System Zarządzania Bazą Danych (SZBD)
C. Klucz obcy
D. Obiektowy System Zarządzania Bazą Danych
Obiektowy System Zarządzania Bazą Danych, klucz obcy oraz otwarty mechanizm komunikacji bazy danych to pojęcia związane z zarządzaniem danymi, jednak nie spełniają one roli SZBD. Obiektowe systemy zarządzania bazą danych (OODBMS) różnią się od tradycyjnych SZBD tym, że przechowują dane w formie obiektów zgodnych z paradygmatem programowania obiektowego. Choć OODBMS mogą być użyteczne w specyficznych zastosowaniach, ich zastosowanie nie jest uniwersalne jak w przypadku SZBD. Klucz obcy to natomiast termin odnoszący się do atrybutu w tabeli, który wskazuje na klucz główny innej tabeli, co pozwala na tworzenie relacji między danymi, ale klucz obcy nie jest oprogramowaniem i nie umożliwia samodzielnego zarządzania danymi. Z kolei otwarty mechanizm komunikacji bazy danych odnosi się do protokołów i standardów, które umożliwiają współpracę między różnymi systemami, jednak również nie spełnia funkcji SZBD. Typowe błędy myślowe prowadzące do takich wniosków to brak zrozumienia różnicy między pojęciem systemu zarządzania bazą danych a specyficznymi elementami, takimi jak klucze czy mechanizmy komunikacji. W tej sytuacji kluczowe jest zrozumienie, że aby móc wykonywać operacje na danych, konieczne jest zainstalowanie odpowiedniego SZBD, które zapewnia pełną funkcjonalność w zarządzaniu danymi.

Pytanie 22

Jakie mogą być źródła rekordów dla raportu?

A. zapytanie INSERT INTO
B. inny raport
C. tabela
D. zapytanie GRANT
Odpowiedzi, które wskazują na inny raport, zapytanie GRANT lub zapytanie INSERT INTO jako źródła rekordów dla raportu, są niepoprawne. Inny raport, choć może zawierać dane, sam w sobie nie jest bezpośrednim źródłem do generowania nowych raportów. Może jednak posłużyć jako inspiracja lub szablon do tworzenia nowych analiz, co nie czyni go źródłem w sensie technicznym. Przykładowo, raport sprzedaży nie może być bezpośrednio wykorzystany jako źródło danych do raportu o wydatkach z powodu różnicy w kontekście i strukturze danych. Zapytanie GRANT natomiast, służy do przyznawania uprawnień użytkownikom w bazie danych, co jest zupełnie inną funkcjonalnością. Użycie tego zapytania w kontekście raportowania jest błędne, ponieważ nie ma ono związku z pozyskiwaniem danych, a jedynie z zarządzaniem dostępem. Na koniec, zapytanie INSERT INTO służy do wstawiania danych do tabel, a nie do ich pozyskiwania. Typowym błędem myślowym jest mylenie tych operacji z procesem tworzenia raportów, gdzie kluczowym elementem jest analizy danych już istniejących w tabelach, a nie dodawanie nowych danych. W kontekście tworzenia raportów, istotne jest, aby skupić się na źródłach, które już przechowują dane, a nie na operacjach, które te dane zmieniają lub manipulują.

Pytanie 23

Sprawdzanie poprawności wypełnienia formularza, które ma przebiegać po stronie klienta, powinno być wykonane w języku

A. PHP
B. JavaScript
C. CSS
D. Ruby on Rails
Zastosowanie CSS do weryfikacji formularzy jest nieodpowiednie, ponieważ CSS jest językiem stylizacji, a nie programowania. Jego głównym zadaniem jest określenie wyglądu i układu elementów na stronie, a nie logika operacji lub przetwarzanie danych. CSS nie ma możliwości interakcji z danymi użytkownika ani przeprowadzania jakichkolwiek obliczeń, co czyni go całkowicie nieadekwatnym narzędziem do walidacji formularzy. Z kolei PHP jest językiem skryptowym działającym po stronie serwera, co oznacza, że wszelkie operacje związane z weryfikacją danych musiałyby odbywać się po przesłaniu formularza, co prowadzi do złego doświadczenia użytkownika. Użytkownik musiałby czekać na odpowiedź serwera, co często wiąże się z opóźnieniami i frustracją. Ruby on Rails, jako framework do rozwijania aplikacji webowych, również nie jest odpowiednim rozwiązaniem do realizacji walidacji po stronie klienta. Jego zastosowanie koncentruje się głównie na logice po stronie serwera i tworzeniu aplikacji, a nie na interakcji użytkownika z interfejsem. Tym samym zarówno PHP, jak i Ruby on Rails nie są w stanie efektywnie zrealizować wymogu weryfikacji formularzy przed ich przesłaniem.

Pytanie 24

W przedstawionym kodzie HTML, zaprezentowany styl CSS jest stylem:

<p style="color:red;">To jest przykładowy akapit.</p>
A. nagłówkowym
B. zewnętrznym
C. dynamicznym
D. lokalnym
Styl CSS określony wewnątrz elementu HTML poprzez atrybut style jest przykładem stylu lokalnego. Styl lokalny pozwala na bezpośrednie przypisanie konkretnych własności CSS do pojedynczego elementu co umożliwia szybkie i łatwe testowanie oraz modyfikacje wyglądu bez potrzeby edytowania zewnętrznych plików CSS. Praktyczne zastosowanie stylów lokalnych odnajdujemy w sytuacjach gdy chcemy wprowadzić zmiany dla pojedynczego elementu na stronie nie wpływając na inne elementy. Na przykład jeśli w jednym miejscu chcemy podkreślić wagę tekstu stosując kolor czerwony możemy użyć stylu lokalnego jak pokazano w pytaniu. Jednak styl lokalny nie jest zalecany dla większych projektów czy skomplikowanych stron ze względu na fakt że utrudnia zarządzanie i utrzymywanie spójnego stylu w całym projekcie. W takich przypadkach lepiej korzystać ze stylów zewnętrznych lub nagłówkowych które oferują lepszą organizację i elastyczność. Warto również pamiętać że implementacja stylu lokalnego może nadpisywać inne style co jest istotne przy rozwiązywaniu problemów związanych z dziedziczeniem stylów CSS.

Pytanie 25

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

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

Do jakich celów wykorzystywany jest certyfikat SSL?

A. do przechowywania informacji o sesjach tworzonych na stronie
B. do eliminowania złośliwego oprogramowania na stronie
C. do deszyfrowania przesyłanych danych
D. w celu identyfikacji właściciela domeny
Certyfikat SSL (Secure Sockets Layer) jest kluczowym elementem zapewniającym bezpieczeństwo komunikacji w Internecie. Jego podstawową funkcją jest zidentyfikowanie właściciela domeny oraz potwierdzenie tożsamości serwera, co jest niezwykle istotne w kontekście ochrony danych przesyłanych pomiędzy użytkownikiem a witryną. Certyfikat SSL działa na zasadzie kryptografii asymetrycznej, co oznacza, że każdy certyfikat posiada unikalny klucz publiczny i prywatny. Użytkownicy mogą być pewni, że komunikują się z właściwym serwerem, co zapobiega atakom typu 'man-in-the-middle'. Przykładem zastosowania certyfikatu SSL jest jego wykorzystanie w sklepach internetowych, gdzie dane osobowe oraz informacje o płatnościach są przesyłane w sposób zabezpieczony. Zgodność z standardami bezpieczeństwa, takimi jak PCI DSS, również wymaga użycia certyfikatów SSL. Dlatego wdrożenie certyfikatu SSL jest nie tylko najlepszą praktyką, ale również wymogiem dla wielu typów działalności online.

Pytanie 27

Kolor zapisany w modelu RGB(255, 0, 0) to

A. zielony
B. czerwony
C. niebieski
D. żółty
Wybór odpowiedzi zielona, żółta lub niebieska wskazuje na pewne nieporozumienia dotyczące modelu RGB oraz jego zastosowania w definiowaniu kolorów. Zielona barwa w modelu RGB byłaby reprezentowana jako RGB(0, 255, 0), co oznacza pełną intensywność zieleni przy zerowej intensywności czerwonej i niebieskiej. Natomiast żółty kolor powstaje w wyniku połączenia czerwonego i zielonego, co w modelu RGB przedstawia się jako RGB(255, 255, 0). Odpowiedź na podstawie wartości RGB(255, 0, 0) nie ma podstaw do uznawania, że jest to kolor żółty czy zielony, ponieważ w obu przypadkach występuje brak jednego z kluczowych składników kolorystycznych. Wybór niebieskiego koloru również jest błędny, ponieważ niebieski w modelu RGB charakteryzuje się wartością RGB(0, 0, 255). Tego typu błędy mogą wynikać z mylnego rozumienia kolorów podstawowych oraz ich kombinacji w kontekście przestrzeni kolorów RGB. Warto zwrócić uwagę na to, że model RGB jest szeroko stosowany w branży multimedialnej, co oznacza, że znajomość zasad jego działania oraz umiejętność wizualizacji kolorów jest niezbędna dla profesjonalistów zajmujących się grafiką komputerową, projektowaniem stron internetowych oraz marketingiem wizualnym. Aby uniknąć takich nieporozumień, warto zainwestować czas w przyswajanie wiedzy na temat teorii kolorów oraz technik kolorystycznych, co pozwoli na lepsze zrozumienie interakcji między kolorami i ich wpływu na percepcję wizualną.

Pytanie 28

Jakie znaczniki <header>, <article>, <section>, <footer> są typowe dla języka

A. style="margin-bottom: 0cm;">HTML 5
B. style="margin-bottom: 0cm;">XHTML 1.1
C. HTML 4.01 Transitional
D. style="margin-bottom: 0cm;">HTML 4.01 Strict
Wybierając XHTML 1.1, HTML 4.01 Strict lub HTML 4.01 Transitional, można nie dostrzegać kluczowych różnic między tymi standardami a HTML5. XHTML 1.1 jest bardziej restrykcyjną wersją HTML, która wprowadza zasady XML, co skutkuje tym, że wszystkie elementy muszą być poprawnie zagnieżdżone i zamknięte. Choć XHTML wprowadza pewne nowe możliwości, nie oferuje semantycznych znaczników, które są dostępne w HTML5, co ogranicza jego użyteczność w kontekście nowoczesnych aplikacji webowych. HTML 4.01 Strict i HTML 4.01 Transitional to starsze standardy, które również nie zawierają semantycznych znaczników. Standard Strict wymagał ścisłego przestrzegania reguł HTML, co mogło być uciążliwe dla deweloperów, natomiast Transitional wprowadzał pewne elementy przestarzałe, co nie sprzyjało dążeniu do czystego i nowoczesnego kodu. Użycie starszych standardów skutkuje brakiem możliwości implementacji nowoczesnych funkcji i ogranicza dostępność treści dla użytkowników oraz robotów wyszukiwarek. W związku z tym, opieranie się na tych technologiach jest nieadekwatne w kontekście obecnych wymagań webowych, które preferują semantykę, dostępność i zgodność z nowoczesnymi standardami. Brak zrozumienia ewolucji HTML może prowadzić do błędnych praktyk w tworzeniu stron internetowych, co w dłuższej perspektywie może wpłynąć na ich użyteczność oraz widoczność w wyszukiwarkach.

Pytanie 29

Zdefiniowana jest tabela o nazwie wycieczki z atrybutami nazwa, cena oraz miejsca (jako liczba dostępnych miejsc). Aby wyświetlić jedynie nazwy tych wycieczek, dla których cena jest mniejsza niż 2000 złotych i które mają co najmniej cztery wolne miejsca, należy użyć zapytania

A. SELECT * FROM wycieczki WHERE cena<2000 OR miejsca>3;
B. SELECT nazwa FROM wycieczki WHERE cena<2000 AND miejsca>3;
C. SELECT * FROM wycieczki WHERE cena<2000 AND miejsca>4;
D. SELECT nazwa FROM wycieczki WHERE cena<2000 OR miejsca>4;
Przyglądając się pozostałym odpowiedziom, można zauważyć, że nie spełniają one wymagań stawianych przez pytanie, co czyni je błędnymi. Pierwsza z nich zawiera operator OR, co oznacza, że przynajmniej jeden z warunków musi być spełniony. W związku z tym, możliwe jest uzyskanie wyników, w których cena jest niższa niż 2000 zł, ale liczba wolnych miejsc wynosi tylko 4 lub mniej, co nie odpowiada wymogowi przynajmniej czterech wolnych miejsc. Dodatkowo, operator AND przed warunkiem miejsc >4 jest niewłaściwy, ponieważ nie zapewnia, że liczba wolnych miejsc będzie co najmniej cztery. Trzecia odpowiedź z kolei wykorzystuje operator * w klauzuli SELECT, co powoduje, że zwrócone zostaną wszystkie kolumny tabeli wycieczki zamiast tylko nazw. Ostatecznie, ostatnia odpowiedź również błędnie używa operatora OR zamiast AND, co prowadzi do sytuacji, w której system może zwrócić wycieczki z ceną powyżej 2000 zł, jeśli chociaż jedno z kryteriów jest spełnione, co nie jest zgodne z zamiarem użytkownika. Te błędy ilustrują istotę precyzyjnego formułowania zapytań SQL, aby uzyskać dokładne i zgodne z wymaganiami wyniki.

Pytanie 30

Weryfikację kompletności formularza, działającą po stronie przeglądarki, należy zrealizować w języku

A. PHP
B. Ruby on Rails
C. JavaScript
D. CSS
Poprawna odpowiedź to JavaScript, bo właśnie ten język działa bezpośrednio w przeglądarce użytkownika i pozwala na dynamiczną weryfikację formularzy jeszcze przed wysłaniem danych na serwer. JavaScript ma dostęp do drzewa DOM, więc może odczytać wartości pól, sprawdzić, czy nie są puste, czy e‑mail ma poprawny format, czy hasło ma odpowiednią długość, a nawet czy dwa pola hasła są identyczne. Z mojego doświadczenia to jest absolutny standard w nowoczesnych aplikacjach webowych: najpierw lekka walidacja po stronie klienta w JS, a dopiero potem solidna walidacja po stronie serwera. Dobrym przykładem jest formularz rejestracji: po wpisaniu zbyt krótkiego hasła JavaScript może od razu wyświetlić komunikat pod polem, bez przeładowania strony. Można też blokować przycisk „Wyślij”, dopóki wszystkie wymagane pola nie są poprawnie wypełnione. W praktyce często używa się zdarzeń takich jak onsubmit na formularzu albo input/blur na polach, żeby na bieżąco sprawdzać dane. Można też korzystać z gotowych bibliotek walidacyjnych, ale pod spodem i tak pracuje JavaScript. W dobrych praktykach przyjmuje się zasadę: walidacja po stronie klienta poprawia wygodę i szybkość obsługi (user experience), ale nie zastępuje walidacji po stronie serwera. JavaScript służy więc do „pierwszej linii obrony” i podpowiedzi użytkownikowi, a serwer (np. w PHP czy innym języku backendowym) musi i tak wszystko jeszcze raz sprawdzić ze względów bezpieczeństwa. Warto też pamiętać o wykorzystaniu wbudowanych mechanizmów HTML5 (atrybuty required, type="email" itd.), ale to JavaScript daje pełną kontrolę nad logiką i komunikatami błędów, bo pozwala tworzyć własne reguły i reagować na konkretne zachowania użytkownika.

Pytanie 31

Podany kod źródłowy ma na celu pokazanie

$liczba = 1;
while ($liczba != 0)
{
  $liczba = rand(0, 100);
  echo $liczba;
}
A. losowe liczby od 0 do 100 aż do momentu, gdy wylosowana zostanie wartość 0
B. wylosowane liczby od 1 do 99
C. liczby wprowadzane z klawiatury do momentu, gdy wczytana zostanie wartość 0
D. kolejne liczby od 1 do 100
Odpowiedzi, które sugerują, że kod generuje kolejne liczby od 1 do 100, wylosowane liczby od 1 do 99, czy też wczytane z klawiatury liczby, zawierają fundamentalne błędy w interpretacji logiki działania przedstawionego kodu. Po pierwsze, pętla while w kodzie analizowanym opiera się na losowym generowaniu liczb z wykorzystaniem funkcji rand(), a nie na sekwencyjnym przydzielaniu wartości. Kod nie generuje przyrostu numerycznego, jak sugeruje odpowiedź sugerująca liczby od 1 do 100. Ponadto, nie ma żadnej logiki, która wprowadzałaby wartości do programu z klawiatury, co całkowicie wyklucza odpowiedzi sugerujące wczytywanie liczb. Ważne jest, aby zrozumieć, że w kontekście programowania różnica pomiędzy losowym generowaniem a sekwencyjnym przydzielaniem wartości ma kluczowe znaczenie. Niepoprawne koncepcje pochodzą często z mylenia pojęć losowości i deterministycznych sekwencji, co prowadzi do błędnych wniosków. Każdy programista musi być świadomy tych różnic, aby unikać nieporozumień w kodzie, co jest istotne zarówno w codziennej praktyce programistycznej, jak i w bardziej złożonych projektach, gdzie precyzyjne działanie kodu jest kluczowe dla uzyskania oczekiwanych wyników.

Pytanie 32

$n = '[email protected]'; $dl = strlen($n); $i = 0; while ($i < $dl && $n[$i] != '@') {     echo $n[$i];     $i++; } Fragment kodu w języku PHP wyświetli

A. wyłącznie nazwę konta, czyli 'adres'
B. cały adres e-mail, czyli '[email protected]'
C. nazwę konta z znakiem @, czyli 'adres@'
D. tylko nazwę domeny, czyli 'host.pl'
W przedstawionym kodzie PHP zmienna $n przechowuje adres e-mail '[email protected]'. Funkcja strlen($n) zwraca długość tego ciągu, co w tym przypadku wynosi 14. Pętla while iteruje przez znaki ciągu, aż napotka znak '@' lub do końca ciągu. W każdej iteracji pętli, znak aktualnej pozycji jest wypisywany. Pętla zaczyna od indeksu 0 i sprawdza każdy znak, aż do momentu, gdy napotka znak '@'. W wyniku działania pętli, wypisywane są tylko znaki przed '@', co w tym przypadku oznacza nazwę konta, czyli 'adres'. Aby lepiej zrozumieć to działanie, warto postawić przed sobą praktyczny przykład. Jeśli zmienimy zmienną $n na '[email protected]', kod wypisze 'test', co potwierdza, że pętla działa zgodnie z zamierzeniem, wypisując wyłącznie część przed znakiem '@'. Technicznie, zmienne tablicowe w PHP mogą być indeksowane za pomocą operatora kwadratowego, co jest wykorzystywane w tym przypadku do dostępu do poszczególnych znaków ciągu, co jest typowe w programowaniu z użyciem PHP i stringów. W kontekście standardów, kod przestrzega zasady oddzielania nazwy użytkownika od domeny w adresie e-mail, co jest kluczowe dla jego poprawnego działania.

Pytanie 33

Jaką instrukcję w JavaScript można uznać za równoważną pod względem funkcjonalności do zaprezentowanej?

Ilustracja do pytania
A. Kod 3
B. Kod 1
C. Kod 2
D. Kod 4
Kod 2 jest poprawny, ponieważ struktura instrukcji warunkowych w JavaScript jest równoważna z wyrażeniem switch przedstawionym w pytaniu. Instrukcja switch pozwala na wykonanie jednej z wielu gałęzi kodu w zależności od wartości wyrażenia, w tym przypadku zmiennej 'dzialanie'. Każdy 'case' w switch odpowiada warunkowi 'if' w strukturze if-else if. W Kodzie 2 każda operacja matematyczna, jak dodawanie czy odejmowanie, jest przypisana do odpowiedniego warunku dzięki zastosowaniu if-else if, co dokładnie odwzorowuje zachowanie switch. Jest to zgodne z dobrą praktyką programistyczną, gdzie wybór między switch a if-else if zależy od przejrzystości i liczby porównywanych przypadków. Kod 2 jest bardziej czytelny, co jest ważne w utrzymywaniu i rozwijaniu kodu produkcyjnego. Praktyczne zastosowanie takiej struktury można znaleźć w budowaniu aplikacji, gdzie decyzje podejmowane są na podstawie wielu możliwych wartości zmiennej.

Pytanie 34

Zamieszczone poniżej zapytanie SQL przyznaje uprawnienie SELECT:

GRANT SELECT ON hurtownia.* TO 'sprzedawca'@'localhost';
A. dla konta root na serwerze localhost
B. do wszystkich kolumn w tabeli hurtownia
C. do wszystkich tabel w bazie danych hurtownia
D. dla konta root na serwerze sprzedawca
Podane polecenie SQL <code>GRANT SELECT ON hurtownia.* TO 'sprzedawca'@'localhost';</code> jest poprawne, ponieważ przyznaje uprawnienia do wykonywania zapytań SELECT na wszystkich tabelach w bazie danych hurtownia. Operator <code>.*</code> w kontekście bazy danych oznacza, że dotyczy to wszystkich tabel znajdujących się w tej bazie. Przyznawanie uprawnień w taki sposób jest zgodne z najlepszymi praktykami zarządzania dostępem w systemach baz danych, ponieważ umożliwia kontrolowanie, którzy użytkownicy mogą uzyskiwać dostęp do danych. W praktyce, jeśli 'sprzedawca' potrzebuje przeglądać dane ze wszystkich tabel w hurtowni, to takie przyznanie uprawnień jest najbardziej efektywne. Takie podejście ułatwia zarządzanie uprawnieniami, pozwalając administratorom na nadawanie ogólnych uprawnień w ramach bazy danych, zamiast przypisywania ich dla każdej tabeli z osobna. Dobrą praktyką jest również regularne przeglądanie i aktualizowanie przydzielonych uprawnień, aby zapewnić bezpieczeństwo i zgodność z zasadami ochrony danych.

Pytanie 35

Jak nazywa się metoda udostępniania bazy danych w programie Microsoft Access, która dotyczy wszystkich obiektów bazy umieszczonych na dysku sieciowym i wykorzystywanych jednocześnie przez kilku użytkowników?

A. dzielonej bazy danych
B. witryny programu SharePoint
C. folderu sieciowego
D. serwera bazy danych
Odpowiedź "folderu sieciowego" jest prawidłowa, ponieważ w kontekście Microsoft Access, metoda udostępniania bazy danych, która obejmuje obiekty bazy umieszczone na dysku sieciowym, opiera się na wykorzystaniu folderów sieciowych. Dzięki temu wiele użytkowników może jednocześnie uzyskiwać dostęp do tych samych danych i obiektów bazy danych, co sprzyja współpracy i zwiększa efektywność pracy. Przykładem zastosowania folderu sieciowego może być sytuacja, w której zespół pracowników korzysta z jednolitej bazy danych klientów, przechowywanej w lokalizacji na serwerze. Wszyscy członkowie zespołu mogą wprowadzać, modyfikować i przeglądać dane, co umożliwia sprawną wymianę informacji i synchronizację działań. Warto również zaznaczyć, że stosowanie folderów sieciowych to jedna z dobrych praktyk w zarządzaniu danymi w organizacjach, ponieważ pozwala na centralizację zasobów oraz kontrolowanie dostępu do nich, co jest zgodne z zasadami bezpieczeństwa informacji.

Pytanie 36

Według którego pola tabeli zostały pogrupowane dane w przedstawionym raporcie?

Ilustracja do pytania
A. wynik
B. id_uczestnika
C. nazwa
D. rok
Na tym raporcie bardzo łatwo się pomylić, bo wizualnie wyróżnia się kilka różnych pól: nazwa konkursu, identyfikator uczestnika i wynik. Jednak kluczowe jest zrozumienie, czym jest „grupowanie” w kontekście raportów bazodanowych. Grupowanie nie oznacza tylko sortowania, ale logiczne zorganizowanie rekordów w bloki, którym często towarzyszy nagłówek grupy. W tym przykładzie takimi nagłówkami są kolejne lata: 2009, 2010, 2011, 2012, 2020. To sygnał, że dane są zorganizowane właśnie według pola „rok”. Jeśli ktoś wybiera „wynik”, zwykle wynika to z mylenia sortowania z grupowaniem. Wynik jest tu po prostu jedną z kolumn, która może być rosnąca, malejąca, ale nie widać żadnych bloków typu „wynik = 100”, „wynik = 55” itp. Gdyby raport był pogrupowany po wyniku, spodziewalibyśmy się nagłówków z konkretnymi wartościami wyniku i pod nimi listy uczestników, co wyraźnie by się odróżniało wizualnie. Podobnie z polem „nazwa”. Konkursy o tej samej nazwie (np. matematyczny, biologiczny) pojawiają się w różnych latach, ale nie są łączone w jedną wspólną sekcję. Gdyby grupowanie było po nazwie, widzielibyśmy nagłówki „matematyczny”, „biologiczny”, „polonistyczny”, a pod nimi przypisane lata i uczestników. Tutaj jest odwrotnie: to rok jest nadrzędny, a nazwa znajduje się w jego obrębie. Pole „id_uczestnika” też nie jest podstawą grupowania. Identyfikatory pojawiają się tylko jako pojedyncze wartości w wierszach danych, bez żadnych nagłówków ani podziałów. Dobre narzędzia raportujące zawsze wizualnie pokazują grupę, zwykle w postaci pogrubionego nagłówka lub osobnego wiersza. W tym raporcie takim elementem jest rok. Z mojego doświadczenia typowym błędem jest patrzenie tylko na pojedyncze kolumny i nie zwracanie uwagi na układ sekcji raportu. W praktyce projektowania raportów i analiz BI zawsze warto najpierw zidentyfikować, które pole tworzy logiczne „koszyki” danych – tutaj to właśnie rok, a pozostałe pola są tylko szczegółami w ramach tych grup.

Pytanie 37

Która z poniżej wymienionych zasad nie przyczyni się do poprawy czytelności kodu?

A. W każdej linii kodu powinna znaleźć się tylko jedna komenda
B. Nazwy zmiennych muszą odzwierciedlać ich funkcję
C. Trzeba dodawać komentarze w trudniejszych fragmentach kodu
D. Kod powinien być napisany bez wcięć i nadmiarowych enterów
Wszystkie informacje zawarte w nietrafnych odpowiedziach błędnie przedstawiają zasady dobrej praktyki programowania, które są kluczowe dla zwiększenia czytelności kodu. Istnienie tylko jednej instrukcji w każdej linii kodu jest zasady, która nie tylko nie jest uniwersalna, ale może prowadzić do nadmiernego rozdrobnienia logiki programu, utrudniając jego analizę. Z kolei użycie zrozumiałych nazw zmiennych jest istotne, ponieważ pozwala innym programistom zrozumieć, co dana zmienna reprezentuje. Przykładowo, nazwa "liczbaStudentów" jest o wiele bardziej informacyjna niż "x". Ponadto, wprowadzenie komentarzy w trudnych częściach kodu nie tylko pomaga w wyjaśnieniu skomplikowanych zagadnień, ale również pełni rolę dokumentacji, co jest niezwykle ważne w dłuższej perspektywie czasowej, zwłaszcza w projektach zespołowych. Przykładem mogą być fragmenty kodu, gdzie skomplikowane algorytmy wymagają dodatkowych wyjaśnień. Komentarze ułatwiają innym zrozumienie myśli programisty. W związku z tym, ignorowanie zasad dotyczących wcięć, zbędnych enterów oraz używania komentarzy prowadzi do kodu, który jest trudny do zrozumienia, co w ostateczności może skutkować błędami w implementacji oraz dłuższym czasem potrzebnym na debugowanie.

Pytanie 38

W HTML, aby dodać obrazek z tekstem umieszczonym pośrodku obrazka, konieczne jest użycie znacznika

A. <img src="obrazek.png" alt="obraz2" align="middle"> tekst
B. <img src="obrazek.png" alt="obraz4"> tekst
C. <img src="obrazek.png" alt="obraz1" hspace="30px"> tekst
D. <img src="obrazek.png" alt="obraz3" height="50%"> tekst
Odpowiedzi, które nie są poprawne, zawierają różne koncepcje i podejścia, które nie spełniają wymogów wyśrodkowania tekstu wokół obrazka. Na przykład, użycie <img src="obrazek.png" alt="obraz3" height="50%"> tekst jest niewłaściwe, ponieważ atrybut height nie wpływa na położenie tekstu w stosunku do obrazka. W rzeczywistości, atrybut ten jedynie zmienia wysokość obrazka, co nie ma związku z umiejscowieniem tekstu. To podejście może prowadzić do błędnych wniosków, że zmiana wymiarów obrazka automatycznie wpływa na układ tekstu, co jest mylne. Z kolei, <img src="obrazek.png" alt="obraz4"> tekst nie zawiera żadnych atrybutów, które mogłyby zdefiniować położenie tekstu, co sprawia, że tekst będzie po prostu wyświetlany obok obrazka, bez jakiejkolwiek kontroli nad jego wyrównaniem. W kontekście nowoczesnych standardów HTML5, brak zastosowania CSS do stylizacji układu nie tylko obniża estetykę strony, ale również nie spełnia oczekiwań dotyczących dostępności. Wiele aplikacji internetowych i stron korzysta z CSS do precyzyjnego zarządzania położeniem elementów, co jest zgodne z zasadami responsywnego projektowania. Użycie atrybutu align z wartością middle w odpowiedzi 2 jest najodpowiedniejszym sposobem na zapewnienie poprawnego wyśrodkowania tekstu, co jest kluczowe w projektowaniu stron internetowych, gdzie zarówno estetyka, jak i funkcjonalność mają duże znaczenie.

Pytanie 39

Kod PHP z fragmentem ```if(empty($_POST["name"])){ $nameErr = "Name is required"; }``` służy do obsługi

A. formularza
B. bazy danych
C. ciasteczek
D. sesji
Fragment kodu nie dotyczy sesji, ponieważ sesje w PHP są zarządzane poprzez funkcje takie jak session_start() oraz zmienne superglobalne $_SESSION, które przechowują dane użytkownika w trakcie sesji. Odpowiedź sugerująca, że kod ten odnosi się do ciasteczek, jest również błędna, ponieważ ciasteczka są zarządzane przez nagłówki HTTP i funkcje takie jak setcookie(), a nie przez bezpośrednie sprawdzanie zawartości formularza. Co więcej, fragment kodu nie ma związku z bazą danych; interakcja z bazą danych w PHP zazwyczaj odbywa się poprzez funkcje takie jak mysqli_query() lub PDO. Typowym błędem myślowym w wskazywaniu na sesje czy ciasteczka jest mylenie kontekstu, w jakim dane są przetwarzane. W tym przypadku, kod koncentruje się wyłącznie na walidacji danych z formularza, a pominięcie tego aspektu prowadzi do nieprawidłowych konkluzji. Poprawne zrozumienie roli walidacji formularzy jest kluczowe dla zapewnienia, że aplikacja działa zgodnie z oczekiwaniami użytkownika oraz zachowuje wysokie standardy bezpieczeństwa.

Pytanie 40

Na podstawie fragmentu dokumentu HTML, określ co należy wpisać w miejsce kropek w odnośniku w menu, aby przenosił on do rozdziału 2.

Fragment menu
<a ...>Rozdział 2</a>

Fragment dalej w dokumencie
<h1 id="r2" name="sekcja2" class="rozdzial2">Rozdział 2<h1>
A. href = "sekcja2"
B. href = "r2"
C. href = "#r2"
D. href = "#sekcja2"
Niestety, Twoja odpowiedź nie jest prawidłowa. Prawidłowa odpowiedź 'href="#r2"' odwołuje się do identyfikatora (id) 'r2' na tej samej stronie. W HTML, atrybut 'href' w tagu 'a' służy do określenia miejsca docelowego odnośnika. Przed identyfikatorem umieszcza się znak '#', który informuje przeglądarkę, że ma poszukać elementu z danym 'id' na tej samej stronie. Błędy w niepoprawnych odpowiedziach wynikają z pominięcia znaku '#' lub zastosowania nieprawidłowego identyfikatora. Pamiętaj, że identyfikator powinien być unikalny dla każdego elementu na stronie i powinien być używany w odnośniku dokładnie w takiej samej formie. W przypadku 'href="r2"' i 'href="sekcja2"', pominięto znak '#', co sprawia, że przeglądarka będzie szukać zasobu o podanej ścieżce, a nie identyfikatora na tej samej stronie. 'href="#sekcja2"' zawiera niepoprawny identyfikator, który nie istnieje na stronie. Kluczowe jest zrozumienie, jak działają identyfikatory i jaki mają wpływ na nawigację na stronie.