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: 8 czerwca 2026 12:24
  • Data zakończenia: 8 czerwca 2026 12:53

Egzamin zdany!

Wynik: 22/40 punktów (55,0%)

Wymagane minimum: 20 punktów (50%)

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

W PHP użyto funkcji is_int(). Które z wymienionych wywołań tej funkcji da wynik TRUE?

A. is_int("135")
B. is_int(NULL)
C. is_int(13.5)
D. is_int(135)
Funkcja is_int() w języku PHP służy do sprawdzania, czy dany argument jest liczbą całkowitą (typ integer). W przypadku wywołania is_int(135), przekazujemy wartość 135, która jest liczbą całkowitą. Funkcja zwróci TRUE, ponieważ 135 spełnia wymóg bycia liczbą całkowitą. W praktyce, użycie is_int() jest przydatne, gdy pracujemy z danymi, które mogą przyjmować różne typy, a naszą intencją jest upewnienie się, że operacje będą wykonywane na liczbach całkowitych. Przykładowo, podczas walidacji danych wejściowych w formularzach mogą się zdarzyć przypadki, gdzie użytkownik wprowadza błędne typy, a is_int() pozwala na ich skuteczną weryfikację przed dalszym przetwarzaniem. W dobrych praktykach programistycznych zawsze warto stosować takie mechanizmy walidacyjne, aby uniknąć błędów w działaniu aplikacji i poprawić jej stabilność. Ważne jest również, aby znać różnice między typami danych w PHP, ponieważ może to mieć wpływ na działanie aplikacji.

Pytanie 2

Algorytm przedstawiony na rysunku można zapisać w języku JavaScript za pomocą instrukcji

A. for(i = 0; i > 10; i++)

B. var i = 0;
   while(i <= 10)
     i += 2;

C. var i = 0;
   do
     i++;
   while(i > 10);

D. var i = 0;
   do
     i = i + 2;
   while(i < 10);
Ilustracja do pytania
A. C.
B. A.
C. D.
D. B.
Dobrze! Wybrałeś prawidłową odpowiedź B. Biorąc pod uwagę wykres przepływu, zmienna 'i' jest inicjalizowana wartością 0 i następnie w pętli zwiększana o 2, dopóki jej wartość nie przekroczy 10. Wprowadzona instrukcja w JavaScript (var i = 0; while(i <= 10) { i += 2; }) idealnie odzwierciedla proces przedstawiony na diagramie. Inicjalizacja zmiennej jest ważnym krokiem w programowaniu, który pozwala na użycie zmiennej w kodzie, a pętla 'while' jest często stosowana do wykonywania części kodu wielokrotnie do momentu, aż warunek przestanie być spełniony. W tym przypadku, warunkiem jest 'i' mniejsze lub równe 10, a kod wewnątrz pętli zwiększa wartość 'i' o 2 za każdym razem, gdy jest wykonywany. Jest to typowy przykład użycia pętli i operatorów w języku JavaScript.

Pytanie 3

Jakie informacje można uzyskać na temat normalizacji tej tabeli?

Ilustracja do pytania
A. Tabela nie jest znormalizowana
B. Tabela znajduje się w pierwszej postaci normalnej
C. Tabela jest w drugiej postaci normalnej
D. Tabela znajduje się w trzeciej postaci normalnej
Tabela przedstawiona w pytaniu nie spełnia wymogów żadnej z trzech podstawowych postaci normalnych co oznacza że nie jest znormalizowana. Pierwsza postać normalna wymaga aby wszystkie wartości w tabeli były atomowe co oznacza że kolumna Adres powinna być podzielona na kilka kolumn takich jak ulica miasto i kod pocztowy. Druga postać normalna wymaga że wszystkie atrybuty niekluczowe muszą być deterministycznie zależne od całego klucza głównego co w tym przypadku nie ma zastosowania ponieważ tabela zawiera tylko dwa atrybuty i brak jest klucza złożonego. Trzecia postać normalna eliminuje wszelkie przejściowe zależności funkcyjne pomiędzy atrybutami niekluczowymi co również nie ma zastosowania w tej prostej strukturze. Typowe błędy myślowe prowadzące do niewłaściwych wniosków mogą obejmować niepełne zrozumienie zasad atomowości danych oraz błędne założenie że nieskomplikowana struktura tabeli automatycznie spełnia zasady normalizacji. Dlatego kluczowe jest aby dokładnie rozumieć i identyfikować zależności między danymi oraz jak te zależności wpływają na integralność i efektywność bazy danych co jest szczególnie istotne w dużych systemach gdzie dane są intensywnie modyfikowane i wykorzystywane przez wiele aplikacji jednocześnie. Właściwa normalizacja pozwala na optymalizację czasu dostępu do danych oraz minimalizację redundancji co jest uznawane za dobrą praktykę w branży projektowania baz danych. W kontekście projektowania systemów informatycznych poprawna normalizacja jest nieodłącznym elementem cyklu życia projektu zapewniającym że struktura danych jest odporna na zmiany w wymaganiach użytkowników oraz skalowalna w przypadku wzrostu ilości danych do obsługi przez system. Dlatego zrozumienie i prawidłowe stosowanie zasad normalizacji jest kluczowe dla przyszłych profesjonalistów w dziedzinie IT którzy będą odpowiedzialni za projektowanie i utrzymanie złożonych systemów bazodanowych.

Pytanie 4

Jaką wartość uzyska zmienna x po wykonaniu kodu PHP zaprezentowanego w ramce?

Ilustracja do pytania
A. Ilość wierszy w tabeli produkty, gdzie pole status jest większe od zera
B. Ilość wierszy w bazie danych
C. Ilość wierszy dodanych do tabeli produkty
D. Ilość wierszy przetworzonych przez zapytanie DELETE FROM
W przedstawionym kodzie PHP funkcja mysqli_affected_rows() jest używana do uzyskania liczby wierszy zmienionych przez ostatnie zapytanie MySQL. W tym przypadku zapytanie DELETE FROM produkty WHERE status < 0 próbuje usunąć wszystkie rekordy z tabeli produkty, których pole status ma wartość mniejszą od zera. Po wykonaniu tego zapytania funkcja mysqli_affected_rows($db) zwróci liczbę wierszy, które zostały rzeczywiście usunięte. To jest szczególnie przydatne w kontekście sprawdzania wpływu operacji na bazę danych i pozwala na dynamiczne podejmowanie decyzji w aplikacjach bazodanowych. Przykładowo, jeśli po usunięciu chcemy wykonać dodatkowe operacje tylko wtedy, gdy co najmniej jeden rekord został usunięty, możemy użyć tej funkcji. Zgodnie z dobrymi praktykami, korzystanie z mysqli_affected_rows() jest standardem, gdyż pozwala również na obsługę wyjątków i błędów bazy danych. Optymalizacja operacji DELETE poprzez precyzyjne filtrowanie w WHERE, jak w naszym przykładzie, jest kluczowa dla zachowania wydajności bazy danych szczególnie w dużych systemach produkcyjnych.

Pytanie 5

W przedstawionym filmie, aby połączyć tekst i wielokąt w jeden obiekt tak, aby operacja ta była odwracalna zastosowano funkcję

A. wykluczenia.
B. sumy.
C. części wspólnej.
D. grupowania.
W tym zadaniu łatwo się pomylić, bo w grafice wektorowej mamy kilka różnych funkcji, które na pierwszy rzut oka wyglądają podobnie: łączą obiekty w coś, co zachowuje się jak jeden element. Jednak ich działanie „pod maską” jest zupełnie inne. Funkcje typu suma, wykluczenie czy część wspólna to klasyczne operacje boolowskie na kształtach. One zmieniają geometrię obiektów, czyli tworzą nową ścieżkę wynikową na podstawie przecięcia lub połączenia istniejących. W praktyce oznacza to, że jeśli zastosujesz sumę na tekście i wielokącie, program najczęściej zamieni tekst na krzywe i połączy wszystko w jedną ścieżkę. Efekt wizualny może być fajny, ale edytowalność tekstu przepada. Nie możesz już po prostu zmienić czcionki czy liter, bo to nie jest tekst, tylko zestaw węzłów.
Podobnie z wykluczeniem: ta operacja tworzy „dziurę” jednego obiektu w drugim. Używa się jej np. do wycinania napisu z tła lub tworzenia maski. To jest typowy trik przy projektach logotypów albo efektach dekoracyjnych. Ale z punktu widzenia pytania – to działanie jest destrukcyjne dla tekstu, bo znowu zamienia go na kształt i łączy z wielokątem w sposób nieodwracalny (poza cofnięciem operacji). Część wspólna działa jeszcze ostrzej: zostawia tylko obszar, w którym obiekty się nakładają. Reszta jest tracona. To też jest operacja geometryczna, a nie organizacyjna.
Typowy błąd myślowy polega na założeniu, że „skoro po operacji mam jeden obiekt, to znaczy, że to jest to samo co grupowanie”. Niestety nie. Grupowanie nie modyfikuje kształtów, tylko tworzy kontener logiczny – tak jakbyś w folderze trzymał kilka plików. Możesz je potem rozgrupować i wszystko wraca do stanu sprzed grupowania. Operacje suma, wykluczenie, część wspólna są destrukcyjne względem oryginalnych obiektów, bo generują nową ścieżkę zamiast starych. W kontekście dobrych praktyk w grafice komputerowej i multimediach przyjmuje się, że dopóki chcesz zachować pełną edytowalność (szczególnie tekstów), używasz grupowania, warstw i wyrównywania, a dopiero na późnym etapie projektu stosujesz operacje boolowskie, i to świadomie, wiedząc, że cofasz się już tylko historią edycji. Dlatego w pytaniu, gdzie mowa jest wprost o połączeniu tekstu i wielokąta w jeden obiekt w sposób odwracalny, jedyną sensowną odpowiedzią jest funkcja grupowania, a nie suma, wykluczenie czy część wspólna.

Pytanie 6

W języku działającym po stronie serwera tworzysz ankietę, której wynik ma być zapamiętany w postaci małego pliku po stronie użytkownika. Jaki mechanizm wykorzystasz?

A. tablicę globalną $_FILES
B. sesję
C. bazę danych SQL
D. ciasteczka (cookies)
Pozostałe mechanizmy przechowują dane gdzie indziej. Tablica $_FILES dotyczy plików wysłanych przez użytkownika na serwer (upload), a nie zapisu czegokolwiek w jego przeglądarce. Sesja przechowuje dane po stronie serwera - w przeglądarce trzyma jedynie identyfikator sesji, a nie sam wynik. Baza danych SQL również znajduje się na serwerze, więc to nie „mały plik u użytkownika”. Informację zapisywaną lokalnie w przeglądarce przechowuje ciasteczko, dlatego to ono jest poprawne.

Pytanie 7

Co zastosować, aby zapewnić integralność (spójność) danych w bazie MS Access?

A. archiwizację bazy
B. defragmentację bazy
C. więzy integralności
D. kwerendę aktualizującą
Spójność danych między powiązanymi tabelami w MS Access zapewniają WIĘZY INTEGRALNOŚCI (relacyjnej) - pilnują, by np. nie dało się dodać rekordu odwołującego się do nieistniejącego klucza w tabeli nadrzędnej. Dlatego stosuje się więzy integralności.

Pytanie 8

Tabela Pacjenci zawiera kolumny: imie, nazwisko, wiek, lekarz_id. Aby stworzyć raport, który będzie zawierał jedynie imiona oraz nazwiska pacjentów mających mniej niż 18 lat i zapisanych do lekarza o id równym 6, można wykorzystać kwerendę SQL

A. SELECT imie, nazwisko WHERE wiek<18 OR lekarz_id=6
B. SELECT imie, nazwisko FROM Pacjenci WHERE wiek<18 AND lekarz_id=6
C. SELECT imie, nazwisko WHERE wiek<18 AND lekarz_id=6
D. SELECT imie, nazwisko FROM Pacjenci WHERE wiek<18 OR lekarz_id=6
Aby uzyskać raport z tabeli Pacjenci, w którym znajdują się wyłącznie imiona i nazwiska pacjentów poniżej 18 roku życia zapisanych do lekarza o id równym 6, należy użyć następującej kwerendy SQL: SELECT imie, nazwisko FROM Pacjenci WHERE wiek<18 AND lekarz_id=6. Kluczowe w tej kwerendzie jest zastosowanie operatora AND, który pozwala na jednoczesne spełnienie obu warunków. W SQL, operator AND łączy dwa warunki, które muszą być prawdziwe, aby dany wiersz został uwzględniony w wynikach. Operator OR byłby nieodpowiedni, ponieważ mógłby zwrócić pacjentów, którzy są młodsi niż 18 lat, ale zapisani do innych lekarzy, co nie spełnia wymagań zadania. Ta kwerenda jest zgodna z ANSI SQL, który jest standardem dla zapytań do baz danych, a także dobrze ilustruje zasady filtracji danych w kontekście relacyjnych baz danych. Przykład takiej tabeli mógłby wyglądać następująco: imie: 'Jan', nazwisko: 'Kowalski', wiek: 17, lekarz_id: 6. W tym przypadku, zapytanie zwróciłoby imię i nazwisko Jana Kowalskiego, ponieważ spełnia on oba warunki.

Pytanie 9

W języku PHP nie można zrealizować

A. obróbki danych przechowywanych w bazach danych
B. tworzenia dynamicznej treści strony
C. zmiany dynamicznej zawartości strony HTML w przeglądarce
D. przetwarzania danych z formularzy
PHP, jako skryptowy język programowania po stronie serwera, nie jest w stanie dynamicznie zmieniać zawartości strony HTML w przeglądarce użytkownika po jej załadowaniu. Operacje, które wykonuje PHP, są realizowane na serwerze, a wyniki tych operacji przesyłane są jako statyczny HTML do przeglądarki. Oznacza to, że jakiekolwiek zmiany w treści strony muszą być przeprowadzane przed wysłaniem odpowiedzi do klienta. Dynamiczne zmiany w istniejącej zawartości HTML w przeglądarce są realizowane za pomocą JavaScriptu, który działa po stronie klienta. Na przykład, jeśli mamy formularz, który po wypełnieniu wymaga zmiany niektórej zawartości na stronie bez jej ponownego ładowania, to właśnie JavaScript, a nie PHP, będzie odpowiedzialny za te zmiany. PHP może generować zawartość w odpowiedzi na żądania, ale nie ma możliwości interakcji z już załadowanym DOM w przeglądarce. To ograniczenie wynika z architektury webowej, w której PHP i JavaScript pełnią różne role, co jest zgodne z ogólnymi standardami tworzenia aplikacji webowych, w tym modelu MVC (Model-View-Controller), gdzie PHP obsługuje model i widok, a JavaScript kontroler.

Pytanie 10

Programista stworzył pętlę w języku C++, która miała za zadanie obliczyć wynik 5! (5! = 1 * 2 * 3 * 4 * 5). Niestety, popełnił błąd logiczny, gdyż

int a = 1;
for (int i=1; i < 5; i++)
{
    a = a * i;
}
cout << a;
Ilustracja do pytania
A. w drugim parametrze pętli powinno być porównanie i < 6 zamiast i < 5
B. zmienna i w pętli powinna być rozpoczynana od 0, a nie od 1
C. zmienna i pętli powinna być zmniejszana, a nie zwiększana
D. zmienna a powinna być początkowo ustawiona na 0 zamiast 1
Zmienna a, odpowiedzialna za przechowywanie wyniku, nie powinna być inicjowana wartością 0, gdyż każdy wynik mnożenia przez 0 również daje 0, co zniweczyłoby cały proces obliczeniowy. Inicjalizacja zmiennej wartością 1 jest odpowiednia, ponieważ jest to element neutralny dla mnożenia. Pomysł inicjowania parametru i pętli wartością 0 zamiast 1 jest błędny, ponieważ obliczanie silni wymaga rozpoczęcia od wartości 1, nie 0. Rozpoczęcie od 0 jest odpowiednie dla iteracji związanych z indeksami tablic w wielu językach programowania, ale nie w przypadku obliczeń liczbowych, takich jak silnia. Dekrementacja parametru i zamiast inkrementacji w kontekście silni jest nieodpowiednia, ponieważ wymagałaby przebiegania pętli wstecz od większej wartości do 1, co komplikuje logikę i zwiększa ryzyko błędów logicznych. Takie podejście nie tylko odbiega od standardowych praktyk, ale również jest mniej czytelne i trudniejsze do zrozumienia oraz utrzymania. Dobre praktyki kodowania zalecają, aby pętla for była używana w sposób, który jest intuicyjnie zrozumiały i logiczny, co oznacza inkrementację w przypadku iteracji przez rosnące wartości. Ustalenie poprawnego warunku zakończenia pętli jest kluczowe dla otrzymania właściwego wyniku, a w przypadku obliczania silni, musi obejmować wszystkie liczby w zakresie od 1 do n. Zrozumienie tych podstawowych zasad jest niezbędne dla każdego programisty, aby unikać powszechnych błędów logicznych w algorytmach.

Pytanie 11

Jakie wyrażenie logiczne w języku PHP weryfikuje, czy zmienna1 znajduje się w jednostronnie domkniętym przedziale <-5, 10)?

A. $zmienna1 >= -5 && $zmienna1 < 10
B. $zmienna1 >= -5 || $zmienna1 < 10
C. $zmienna1 <= -5 && $zmienna1 < 10
D. $zmienna1 <= -5 || $zmienna1 < 10
W analizowanych odpowiedziach pojawia się kilka błędnych koncepcji związanych z użyciem operatorów logicznych oraz interpretacją przedziałów. W przypadku wyrażenia $zmienna1 >= -5 || $zmienna1 < 10, zastosowanie operatora || (OR) prowadzi do sytuacji, w której warunki są połączone w sposób, który nie spełnia wymagań jednostronnie domkniętego przedziału. W praktyce oznacza to, że jeśli zmienna1 jest mniejsza od 10, ale większa od -5, cały warunek zwraca prawdę, co jest niezgodne z zamierzonym przedziałem. Podobny błąd występuje w wyrażeniu $zmienna1 <= -5 || $zmienna1 < 10, gdzie również użycie operatora OR skutkuje tym, że przedział nie jest odpowiednio ograniczony. Ostatnie wyrażenie $zmienna1 <= -5 && $zmienna1 < 10 zawiera dodatkowo błąd związany z interpretacją granicy -5, które nie powinno być włączone w przedział domknięty. Takie błędne rozumienie prowadzi do nieprawidłowego przechwytywania wartości zmiennej, co jest szczególnie istotne w kontekście programowania w PHP, gdzie precyzyjne określenie warunków jest kluczowe dla zapewnienia poprawności działania aplikacji. Zrozumienie różnicy między jednostronnie domkniętym a domkniętym przedziałem jest fundamentem w programowaniu i pozwala uniknąć typowych pułapek podczas implementacji logiki aplikacji. Warto także regularnie przeglądać dokumentację oraz standardy dotyczące operatorskich konstrukcji w PHP, aby utrzymać wysoką jakość kodu.

Pytanie 12

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

A. dodać klucz obcy
B. stworzyć osobną tabelę przechowującą tylko te pola
C. dodać więzy integralności
D. utworzyć indeks
Tworzenie indeksu na polach, które często przeszukujesz lub sortujesz, to naprawdę ważna rzecz, jeśli chodzi o wydajność baz danych. Indeksy działają trochę jak spis treści w książkach – pozwalają systemowi szybko znaleźć te dane, których potrzebujesz, bez przeszukiwania całego folderu. Dzięki nim zapytania SELECT mogą iść jak burza, co ma ogromne znaczenie w aplikacjach, gdzie liczy się czas. Przykład? Jeśli zrobisz indeks na kolumnie 'email' w tabeli 'Users', to znacznie szybciej odnajdziesz użytkowników po adresie email. W praktyce warto też regularnie monitorować, jak działają te indeksy i je optymalizować, na przykład usuwając te, które są zbędne, żeby nie przeciążać bazy danych. Dobrze jest pamiętać, że przy dodawaniu lub aktualizowaniu danych, indeksy mogą trochę spowolnić działanie, więc lepiej używać ich z głową.

Pytanie 13

Technika projektowania algorytmów polegająca na dzieleniu problemu na mniejsze podproblemy, aż staną się na tyle proste, że można je rozwiązać bezpośrednio, to:

A. sortowanie przez wybór
B. sito Eratostenesa
C. słowa Fibonacciego
D. dziel i zwyciężaj
Pozostałe pozycje to konkretne algorytmy lub pojęcia, a nie ogólna technika podziału problemu. Sito Eratostenesa to algorytm wyznaczania liczb pierwszych do zadanej granicy. Sortowanie przez wybór to jeden z prostych algorytmów porządkowania (szuka najmniejszego elementu i przenosi go na początek). Słowa Fibonacciego to pojęcie z teorii ciągów i kombinatoryki, niezwiązane z projektowaniem algorytmów. Dzielenie problemu na podproblemy aż do trywialnych to „dziel i zwyciężaj”, dlatego ta odpowiedź jest poprawna.

Pytanie 14

Aby usunąć z nagrania szmery i zakłócenia tła, należy zastosować efekt:

A. zmiany wysokości dźwięku
B. pogłosu (reverb)
C. normalizacji
D. redukcji szumów
Redukcja (usuwanie) szumów to obróbka, która analizuje stałe, niepożądane tło - szum, przydźwięk, syk - i wycisza je, pozostawiając właściwy sygnał. W edytorach audio zwykle pobiera się próbkę samego szumu, a program odejmuje go z całego nagrania. Dlatego do usunięcia szmerów i zakłóceń tła służy efekt redukcji szumów.

Pytanie 15

Instrukcja w języku SQL GRANT ALL PRIVILEGES ON klienci TO pracownik

A. przyznaje wszystkie uprawnienia do tabeli klienci użytkownikowi pracownik
B. przyznaje uprawnienie grupie klienci dla tabeli pracownik
C. przeniesie uprawnienia z grupy klienci do użytkownika pracownik
D. cofa wszystkie uprawnienia pracownikowi do tabeli klienci
Polecenie SQL "GRANT ALL PRIVILEGES ON klienci TO pracownik" jest używane do nadawania pełnych uprawnień do określonej tabeli, w tym przypadku do tabeli "klienci", użytkownikowi o nazwie "pracownik". To polecenie jest kluczowe w zarządzaniu dostępem w bazach danych, ponieważ pozwala administratorom na precyzyjne kontrolowanie, kto i w jakim zakresie może modyfikować dane. W praktyce, nadawanie uprawnień za pomocą komendy GRANT jest standardową praktyką w zarządzaniu bazami danych, pozwalającą na delegowanie odpowiedzialności oraz przydzielanie ról, co zwiększa bezpieczeństwo danych. Warto również zauważyć, że standardową praktyką jest ograniczanie uprawnień do niezbędnego minimum, stosując zasady najmniejszych uprawnień (principle of least privilege). Przykładowo, zamiast nadawania pełnych uprawnień, można przyznać użytkownikowi jedynie prawo do odczytu, co ogranicza ryzyko nieautoryzowanych zmian w danych.

Pytanie 16

Aby skryptem PHP wstawić do bazy dane z formularza, używasz wywołania:

mysqli_query($zm1, $zm2);
Co należy przekazać w parametrach $zm1 i $zm2?
A. w $zm1 identyfikator połączenia, w $zm2 zapytanie SELECT
B. w $zm1 wartość NULL, w $zm2 zapytanie SELECT
C. w $zm1 identyfikator połączenia z bazą, w $zm2 zapytanie INSERT INTO
D. w $zm1 id wiersza, w $zm2 zapytanie INSERT INTO
Funkcja mysqli_query() przyjmuje dwa parametry: pierwszy ($zm1) to uchwyt połączenia z bazą zwrócony przez mysqli_connect(), a drugi ($zm2) to treść zapytania SQL. Aby wstawić dane, w drugim parametrze przekazuje się zapytanie INSERT INTO. Dlatego poprawne jest: połączenie w $zm1 i INSERT INTO w $zm2.

Pytanie 17

Jakim sposobem można w języku PHP dokumentować blok komentarza składający się z wielu linii?

A. <!-- -->
B. /* */
C. //
D. #
W języku PHP oprócz bloku komentarza /* */ istnieją inne metody, które jednak nie są przeznaczone do tworzenia komentarzy wieloliniowych. Użycie // pozwala na komentowanie jedynie pojedynczych linii kodu, co może być mylące dla osób, które szukają sposobu na dodawanie dłuższych opisów. Kiedy stosujemy ten styl, każda linia, którą chcemy skomentować, musi być poprzedzona tymi znakami, co znacząco ogranicza możliwości dokumentacji w kodzie. Podobnie sytuacja wygląda w przypadku znaku #, który również działa jedynie na poziomie pojedynczych linii. Te podejścia mogą prowadzić do nieefektywności, zwłaszcza w bardziej złożonych projektach, gdzie jasne i zwięzłe komentarze są kluczowe dla utrzymania zrozumiałości kodu. Alternatywnie, użycie <!-- --> jest związane z HTML i nie jest poprawne w kontekście PHP, ponieważ nie jest uznawane za standardowy sposób komentowania w tym języku. Dlatego istotne jest, aby programiści stosowali odpowiednie metody zgodne z konwencjami PHP, aby uniknąć nieporozumień oraz zapewnić, że dokumentacja kodu będzie użyteczna i łatwo dostępna dla innych twórców. Błędem jest zatem stosowanie nieodpowiednich znaków do komentowania, co może prowadzić do nieczytelności oraz trudności w utrzymaniu kodu.

Pytanie 18

Które wyrażenie w C++ sprawdza, czy liczba jest TRZYCYFROWĄ wartością PARZYSTĄ?

A.
liczba % 2 == 0 || liczba > 99 || liczba < 999
B.
liczba % 2 == 0 && liczba > 99 && liczba < 999
C.
liczba % 2 == 0 && (liczba > 99 || liczba < 999)
D.
liczba % 2 == 0 || (liczba > 99 && liczba < 999)
Pozostałe zapisy źle łączą warunki. || wystarczyłoby spełnić jeden z nich, więc przeszłaby też liczba jednocyfrowa parzysta. Warunek „liczba > 99 || liczba < 999” jest prawdziwy dla niemal każdej liczby. Trzycyfrową parzystą opisuje liczba % 2 == 0 && liczba > 99 && liczba < 999.

Pytanie 19

W bazie danych dotyczącej sklepu znajduje się tabela artykuły, która posiada pole o nazwie nowy. Jak można zaktualizować to pole, aby dla każdego rekordu wprowadzić wartość TRUE, stosując odpowiednią kwerendę?

A. UPDATE nowy FROM artykuły VALUE TRUE
B. UPDATE artykuły SET nowy=TRUE
C. INSERT INTO nowy FROM artykuły SET TRUE
D. INSERT INTO artykuły VALUE nowy=TRUE
Odpowiedź UPDATE artykuły SET nowy=TRUE; jest poprawna, ponieważ wykorzystuje standardową składnię SQL do aktualizacji istniejących rekordów w tabeli. Kwerenda ta zmienia wartość pola 'nowy' na TRUE dla wszystkich rekordów w tabeli 'artykuły'. Metoda ta jest szeroko stosowana w praktyce, gdyż pozwala na masową aktualizację danych w bazie bez konieczności ich usuwania czy dodawania nowych rekordów. Z uwagi na fakt, że pole 'nowy' ma być uzupełnione dla wszystkich pozycji w tabeli, użycie kwerendy UPDATE jest najefektywniejszym i najbardziej intuicyjnym rozwiązaniem. Przykład zastosowania może obejmować sytuację, w której sklep wprowadza nową kategorię produktów, które są oznaczane jako 'nowe'. Stosowanie dobrze zdefiniowanych kwerend UPDATE jest zgodne z dobrymi praktykami w zarządzaniu bazami danych, ponieważ promuje integralność danych oraz umożliwia łatwą modyfikację i kontrolę nad bazą.

Pytanie 20

Jak prawidłowo skomentować linię kodu w języku Java Script? Komentarz powinien być umieszczony po znakach //

x = Math.max(a,b,c); //
A. nieprawidłowe dane
B. w zmiennej x maksymalna wartość ze zmiennych a, b, c
C. wybór losowej wartości ze zmiennych a, b i c
D. w zmiennej x minimalna wartość ze zmiennych a, b, c
Odpowiedź numer 1 jest całkiem trafna, bo funkcja Math.max w JavaScript tak naprawdę najpierw sprawdza, która z podanych wartości jest największa. W tym wypadku, x = Math.max(a, b, c) zwraca największą liczbę z a, b i c i przypisuje ją do x. To jest super przydatne, gdy musisz szybko porównać jakieś liczby, na przykład podczas analizowania danych albo ustalania maksymalnych limitów w aplikacjach internetowych. Math.max to część wbudowanej biblioteki Math, która ma sporo przydatnych funkcji. Wykorzystanie tej funkcji jest zgodne z dobrymi praktykami programowania, bo jest szybka i bezpieczna. Co ważne, Math.max przyjmuje różną liczbę argumentów, więc można ją łatwo dopasować do swoich potrzeb. Używanie tej funkcji naprawdę poprawia czytelność kodu, a to jest kluczowe w projektach, gdzie inne osoby mogą musieć zrozumieć nasz kod.

Pytanie 21

Funkcję Clean Project środowiska IDE stosuje się do

A. kompilowania projektu, gdy pliki źródłowe zostały zmienione.
B. debugowania skompilowanego i uruchomionego projektu.
C. usuwania wyników kompilacji projektu.
D. usuwania całego projektu.
Funkcja „Clean Project” w środowisku IDE bywa mylona z kilkoma zupełnie innymi operacjami i stąd często biorą się błędne skojarzenia. Warto to sobie dobrze poukładać, bo w pracy z większymi projektami, szczególnie webowymi, znajomość tych różnic mocno ułatwia życie. Po pierwsze, Clean nie służy do usuwania całego projektu. IDE nie kasuje Twoich plików źródłowych, katalogów z kodem, konfiguracji, zasobów graficznych czy plików HTML, CSS, PHP, JS. Gdyby tak było, byłoby to po prostu niebezpieczne i kompletnie sprzeczne z dobrymi praktykami. Usuwanie projektu to zupełnie inna, osobna akcja, zwykle nazwana wprost „Delete project”, „Remove from workspace” itp. Clean ingeruje tylko w to, co zostało wygenerowane automatycznie podczas kompilacji lub procesu buildowania, czyli w artefakty, które w razie czego można bezpiecznie odtworzyć z kodu. Drugi częsty błąd to traktowanie funkcji Clean jako mechanizmu kompilowania projektu po zmianie plików źródłowych. W większości IDE kompilacją zajmują się polecenia typu „Build”, „Rebuild”, „Run”, ewentualnie system automatycznego builda po zapisaniu pliku. Clean sam z siebie nie kompiluje – on przygotowuje pole do ponownego, pełnego builda, usuwając stare binaria. Można to porównać do posprzątania warsztatu przed rozpoczęciem nowej pracy, a nie do samego naprawiania. Trzecie nieporozumienie to łączenie Clean z debugowaniem. Debugowanie polega na uruchamianiu skompilowanego programu z podpiętym debuggerem, stawianiu breakpointów, podglądaniu zmiennych, stosu wywołań itd. Funkcja Clean nie uruchamia aplikacji ani nie wchodzi w tryb debugowania, tylko czyści katalogi z wynikami wcześniejszych kompilacji. Typowy błąd myślowy polega na mieszaniu tych trzech etapów: porządkowania artefaktów (Clean), kompilacji/builda (Build/Run) i analizy działania programu (Debug). W praktyce, poprawna sekwencja przy dziwnych błędach to: Clean, potem pełny Build, a dopiero później ewentualne Debug. Takie rozdzielenie ról narzędzi jest standardem w większości popularnych IDE i systemów buildowania i dobrze jest się do niego przyzwyczaić, bo potem łatwiej przenosić się między różnymi technologiami i środowiskami.

Pytanie 22

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 AND ostatnieZakupy >= '2022-01-01'
B. WHERE punkty > 3000 OR liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
C. WHERE (punkty > 3000 OR liczbaZakupow > 100) AND ostatnieZakupy >= '2022-01'
D. WHERE punkty > 3000 AND liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
Odpowiedź ta jest poprawna, ponieważ zastosowano w niej właściwą logikę warunków w klauzuli WHERE. Aby wybrać klientów, którzy spełniają co najmniej jeden z dwóch pierwszych warunków (posiadają więcej niż 3000 punktów lub wykonali więcej niż 100 zakupów), używamy operatora OR. Z kolei ostatni warunek, dotyczący daty ostatnich zakupów, musi łączyć się z poprzednimi za pomocą operatora AND. Oznacza to, że aby klient został uwzględniony w wynikach, musi spełniać przynajmniej jeden z warunków dotyczących punktów lub liczby zakupów, a równocześnie musi mieć ostatnie zakupy dokonane w roku 2022 lub później. Takie podejście jest zgodne z dobrymi praktykami w SQL, w których operator OR jest wykorzystywany do łączenia warunków alternatywnych, a AND do warunków koniecznych. Na przykład, jeśli chcemy analizować dane klientów w kontekście programów lojalnościowych, takie zapytanie pozwoliłoby nam na wyodrębnienie najbardziej aktywnych klientów, co może być przydatne przy planowaniu kampanii marketingowych.

Pytanie 23

Jaką maksymalną liczbę znaczników &lt;td&gt; można zastosować w tabeli składającej się z trzech kolumn i trzech wierszy, która nie zawiera złączeń między komórkami oraz wiersza nagłówkowego?

A. 6
B. 3
C. 12
D. 9
Odpowiedź 9 jest poprawna, ponieważ w tabeli składającej się z trzech kolumn i trzech wierszy, każdy wiersz może zawierać trzy komórki danych. Zatem, aby obliczyć maksymalną liczbę znaczników &lt;td&gt;, należy pomnożyć liczbę kolumn przez liczbę wierszy: 3 kolumny x 3 wiersze = 9 znaczników &lt;td&gt;. Ważne jest, aby pamiętać, że w kontekście HTML, znacznik &lt;td&gt; służy do definiowania komórek tabeli i jest używany tylko do umieszczania danych w tabeli. Przy projektowaniu tabel w HTML, dobrym rozwiązaniem jest stosowanie przejrzystej struktury oraz odpowiednich znaczników, aby poprawić czytelność i dostępność stron. Zgodnie z dobrymi praktykami, zawsze warto używać znaczników &lt;th&gt; do nagłówków kolumn, ale w tym przypadku, zgodnie z treścią pytania, zakładamy, że nie stosujemy wiersza nagłówkowego. W efekcie maksymalna liczba komórek, które można wykorzystać w takiej tabeli, wynosi 9. Przykładem zastosowania takiej tabeli może być wyświetlanie danych o produktach, gdzie każda komórka zawierać może różne informacje, takie jak nazwa produktu, cena i ilość.

Pytanie 24

Który zapis CSS ustawi wcięcie PIERWSZEJ linii akapitu na 30 pikseli?

A.
p { text-spacing: 30px; }
B.
p { text-indent: 30px; }
C.
p { line-indent: 30px; }
D.
p { line-height: 30px; }
Pozostałe właściwości nie istnieją lub robią co innego. text-spacing i line-indent w CSS nie istnieją. line-height ustawia WYSOKOŚĆ wiersza (odstęp między liniami), a nie wcięcie. Wcięcie pierwszej linii daje text-indent.

Pytanie 25

Co realizuje funkcja COUNT w SQL?

A. obliczanie średniej w kolumnie
B. obliczanie wartości bezwzględnej
C. zliczanie znaków w polu tekstowym
D. zliczanie rekordów (wierszy) wybranych kwerendą
Funkcja agregująca COUNT zlicza REKORDY (wiersze) zwrócone przez kwerendę - np. COUNT(*) poda liczbę wszystkich wierszy spełniających warunki. Dlatego COUNT zlicza rekordy wybrane kwerendą.

Pytanie 26

W wyniku przedstawionego polecenia w tabeli zostanie

ALTER TABLE nazwa1 ADD nazwa2 DOUBLE NOT NULL;
A. dodana kolumna nazwa2 z wymuszoną wartością DOUBLE
B. zmieniony typ kolumny nazwa2 na DOUBLE
C. dodana kolumna nazwa2 o typie zmiennoprzecinkowym
D. zmieniona kolumna z nazwa1 na nazwa2
Odpowiedź numer 3 jest prawidłowa, ponieważ zapytanie SQL "ALTER TABLE nazwa1 ADD nazwa2 DOUBLE NOT NULL;" definiuje dodanie nowej kolumny o nazwie "nazwa2" do istniejącej tabeli "nazwa1". Typ danych DOUBLE oznacza, że kolumna ta będzie mogła przechowywać liczby zmiennoprzecinkowe, co jest przydatne w przypadku danych wymagających wysokiej precyzji, takich jak wartości finansowe czy pomiary naukowe. Oprócz tego, klauzula "NOT NULL" oznacza, że w kolumnie nie mogą znajdować się żadne wartości NULL, co jest istotne dla zapewnienia integralności danych. W praktyce, dodawanie kolumn w bazach danych jest często używane do wzbogacania istniejących struktur danych, aby dostosować je do zmieniających się wymagań aplikacji. Dobrą praktyką jest również odpowiednie indeksowanie nowych kolumn, aby zwiększyć wydajność zapytań, które będą z nich korzystały. W kontekście standardów, ważne jest, aby zmiany w strukturze tabeli były wprowadzane w sposób, który nie wpływa negatywnie na istniejące dane i aplikacje.

Pytanie 27

Jakie polecenie pozwala na dodanie kolumny zadaniekompletne do tabeli zadania?

A. CREATEINDEX zadania ADD COLUMN zadaniekompletne int
B. ALTER TABLE zadania ADD COLUMN zadaniekompletne int
C. INSERT INTO zadania VALUES zadaniakompletne
D. ADD COLUMN zadaniekompletne WITH zadania
Odpowiedź 'ALTER TABLE zadania ADD COLUMN zadaniekompletne int' jest rzeczywiście na miejscu. To polecenie ALTER TABLE to standardowy sposób na zmiany w tabelach w SQL. Dzięki niemu możemy dodawać, usuwać czy zmieniać kolumny, a także wprowadzać różne ograniczenia. W tym przypadku dodajemy nową kolumnę 'zadaniekompletne', która będzie przyjmować wartości całkowite (int). Fajnym przykładem zastosowania tego polecenia może być śledzenie postępu zadań w projekcie. Kolumna 'zadaniekompletne' mogłaby oznaczać, czy zadanie jest skończone (np. 0 dla nieukończonego, 1 dla ukończonego). Zawsze warto pomyśleć o tym, jak takie zmiany mogą wpłynąć na istniejące dane oraz aplikacje korzystające z tej tabeli, żeby nie narazić się na różne problemy z danymi.

Pytanie 28

Zapis CSS postaci:

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

sprawi, że na stronie internetowej
A. punktorem listy nienumerowanej będzie rys.gif
B. każdy z punktów listy będzie miał osobne tło pobrane z grafiki rys.gif
C. rys.gif będzie stanowił ramkę dla listy nienumerowanej.
D. wyświetli się rysunek rys.gif jako tło listy nienumerowanej.
Wygląda na to, że nie zrozumiałeś poprawnie jak działa właściwość CSS list-style-image. Ta właściwość nie jest używana do ustawienia obrazka jako tła listy, ramki listy lub tła każdego punktu listy. Zamiast tego, jest ona wykorzystywana do określenia obrazu, który będzie służył jako punktor listy nienumerowanej. W podanym kodzie CSS, obrazek 'rys.gif' zostanie ustawiony jako punktor dla każdego elementu listy <li> wewnątrz listy nienumerowanej <ul>. To ważne, aby zrozumieć, że mimo że obrazek jest ustawiony jako punktor, nie wpłynie to na tło ani na obramowanie listy. Ponadto, obrazek nie będzie stanowił tła dla każdego z punktów listy. To jest powszechny błąd, który wielu programistów początkujących może popełnić. Pamiętaj, że podstawowym celem CSS jest stylizowanie elementów HTML, a nie modyfikowanie ich struktury lub funkcjonalności. Zatem użycie właściwości list-style-image do modyfikacji tła lub obramowania listy byłoby niezgodne z zasadami CSS.

Pytanie 29

Na ilustracji przedstawiono dwie tabele. Aby ustanowić między nimi relację jeden do wielu, gdzie jedna strona to Klienci, a druga strona to Zamowienia, należy

Ilustracja do pytania
A. wprowadzić pole klucza obcego do tabeli Zamowienia i powiązać je z ID tabeli Klienci.
B. stworzyć trzecią tabelę z dwoma kluczami obcymi. Jeden klucz połączyć z ID tabeli Klienci, a drugi klucz połączyć z ID tabeli Zamowienia.
C. powiązać relacją pola ID z obu tabel.
D. dodać pole klucza obcego do tabeli Klienci i powiązać je z ID tabeli Zamowienia.
Tworzenie relacji jeden do wielu między tabelami w bazie danych wymaga zrozumienia, jak działa klucz podstawowy i klucz obcy. W tym przypadku tabela Klienci posiada pole ID, które jest kluczem podstawowym. Aby utworzyć relację jeden do wielu, należy dodać do tabeli Zamowienia pole klucza obcego, które będzie połączone z polem ID z tabeli Klienci. Dzięki temu każdy rekord w tabeli Zamowienia będzie mógł być przypisany do jednego klienta, ale jeden klient może mieć wiele zamówień. Taka struktura jest zgodna z normalizacją baz danych, która ma na celu eliminację redundancji danych i zapewnienie integralności danych. W praktyce, w systemach takich jak SQL, relacje te są wykorzystywane do wykonywania operacji takich jak wyszukiwanie wszystkich zamówień dla konkretnego klienta, co jest wykonywane przez dołączenie tabel za pomocą klucza obcego. Implementacja kluczy obcych w bazach danych jest standardową praktyką, która zwiększa spójność i bezpieczeństwo danych, minimalizując ryzyko błędów podczas operacji CRUD (Create Read Update Delete).

Pytanie 30

Aby prawidłowo udokumentować linię kodu w języku JavaScript, należy po znakach // wpisać komentarz.

x = Math.max(a, b, c); //
A. w zmiennej x maksymalna wartość ze zmiennych a, b, c
B. wybór losowej wartości ze zmiennych a, b i c
C. w zmiennej x minimalna wartość ze zmiennych a, b, c
D. nieprawidłowe dane.
Odpowiedź "w zmiennej x maksymalna wartość ze zmiennych a, b, c" jest poprawna, ponieważ odzwierciedla działanie funkcji Math.max() w języku JavaScript, która zwraca największą wartość spośród podanych argumentów. W kontekście tej linii kodu, przypisanie wartości do zmiennej x jest kluczowym elementem programowania, gdyż pozwala na dynamiczne ustalanie największej wartości zmiennych a, b i c w różnych scenariuszach. W praktyce, odpowiednia dokumentacja kodu, w tym komentarze, jest niezbędna do utrzymania czytelności i zrozumiałości kodu, zwłaszcza w większych projektach. Komentarze pomagają innym programistom (lub nawet samym autorom kodu w przyszłości) szybko zrozumieć, co dany fragment kodu robi. Używanie komentarzy w odpowiednich miejscach, szczególnie po operatorze "//", jest uznawane za dobrą praktykę w programowaniu. Dlatego ważne jest, aby jasno określić funkcję danej linii kodu, co czyni tę odpowiedź trafną.

Pytanie 31

Co oznacza jednostka ppi (pixels per inch)?

A. to parametr cyfrowych urządzeń pomiarowych
B. określa rozdzielczość wydruków drukarek i ploterów
C. określa rozdzielczość obrazów rastrowych
D. określa rozdzielczość grafiki wektorowej
Pozostałe opisy mylą ppi z innymi parametrami. Rozdzielczość WYDRUKU drukarek i ploterów wyraża się w dpi (punkty na cal), a nie ppi. Grafika WEKTOROWA nie ma pikseli, więc nie opisuje się jej w ppi. To też nie parametr urządzeń pomiarowych. ppi określa rozdzielczość obrazów rastrowych.

Pytanie 32

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="c:\style/default.css" />
B. <link rel="stylesheet" type="text/css" href="c:/style/default.css" />
C. <link rel="stylesheet" type="text/css" href="...\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 33

bool gotowe=true;
cout<<gotowe;
Jakie będzie wyjście w wyniku wykonania podanych poleceń?

A. 1
B. 0
C. Nie
D. Tak
Kiedy wybrałeś, że wynik to '0' lub inną wartość logiczną, mogłeś się pomylić co do działania zmiennych typu bool w C++. Myśląc, że wynik to '0', można sądzić, że zmienna gotowe (z wartością true) nie jest prawidłowo wyświetlana jako liczba. To jest w sumie sprzeczne z tym, co mówi definicja typu bool, bo true i false są pokazywane jako 1 i 0. Myślenie, że 'Tak' lub 'Nie' to dobre odpowiedzi, może wynikać z błędnego założenia, że bool można bardziej skomplikowanie interpretować. W rzeczywistości w C++ nie ma prostego przełożenia bool na tekst; korzystamy z liczbowych odpowiedników. Takie nieporozumienia mogą prowadzić do różnych błędów, zwłaszcza gdy programista nie rozumie podstawowych zasad konwersji typów danych. Ważne jest, żeby programiści wiedzieli, jak różne typy są reprezentowane i konwertowane w języku, bo to ma wpływ na działanie ich programów oraz na interakcje z użytkownikami. Ta wiedza jest kluczowa do tworzenia sprawnych aplikacji i unikania typowych błędów w kodowaniu.

Pytanie 34

Przedstawiony kod PHP nawiązuje połączenie z serwerem bazy danych. Jakiego typu operacje powinny się znaleźć w instrukcji warunkowej w miejscu trzech kropek?
$db = mysqli_connect("localhost", "root", "qwerty", "baza1");
if (!$db) {
...
}

A. Zamknięcie połączenia z bazą danych
B. Informacja o udanym połączeniu z bazą
C. Obsługa błędu połączenia
D. Obsługa danych uzyskanych z bazy
Wybór obsługi błędu połączenia jako prawidłowej odpowiedzi jest zgodny z najlepszymi praktykami programistycznymi w zakresie zarządzania połączeniami z bazą danych. W sytuacji, gdy połączenie nie zostanie nawiązane, ważne jest, aby skutecznie obsłużyć ten błąd. Tylko w ten sposób programista może zrozumieć, co poszło nie tak, a także podjąć odpowiednie kroki w celu skorygowania problemu. Na przykład można wyświetlić komunikat informujący o błędzie, logować go w systemie lub wysłać powiadomienie do administratora. Dobrą praktyką jest również implementacja mechanizmów ponownego łączenia lub alternatywnych metod połączenia, jeśli to możliwe. Warto również zaznaczyć, że niewłaściwe zarządzanie połączeniem z bazą danych może prowadzić do poważnych konsekwencji, takich jak utrata danych, a nawet awarie aplikacji. Dlatego, umieszczając kod do obsługi błędów w instrukcji warunkowej, programista wykazuje się odpowiedzialnością oraz dbałością o jakość kodu.

Pytanie 35

Który składnik nie jest wymagany do instalacji i uruchomienia systemu CMS Joomla!?

A. baza danych
B. parser PHP
C. serwer WWW
D. platforma .NET
W pytaniu o wymagania systemowe dla Joomla! bardzo łatwo pomylić ogólne pojęcie „serwer” czy „platforma” z konkretnymi technologiami, które faktycznie są potrzebne. Joomla! to klasyczny CMS napisany w PHP, który działa w architekturze klient–serwer zgodnej z typowym modelem aplikacji webowych. Do poprawnego działania potrzebuje trzech filarów: serwera WWW, interpretera PHP oraz relacyjnej bazy danych. Serwer WWW, taki jak Apache czy Nginx, przyjmuje żądania HTTP z przeglądarki, obsługuje pliki statyczne i przekazuje żądania do skryptów PHP. Bez tego elementu użytkownik w ogóle nie byłby w stanie połączyć się z witryną. Parser (interpretator) PHP jest absolutnie kluczowy, bo cały kod Joomla! – logika logowania, panele administracyjne, generowanie treści, system szablonów – jest napisany właśnie w tym języku. To nie jest zwykły „dodatek”, tylko środowisko uruchomieniowe aplikacji. Baza danych z kolei przechowuje wszystkie dynamiczne dane: artykuły, użytkowników, uprawnienia, moduły, konfigurację. Bez bazy CMS przestałby być „systemem zarządzania treścią”, bo nie miałby gdzie tej treści trwale zapisywać. Częsty błąd myślowy polega na wrzucaniu do jednego worka wszystkich technologii serwerowych: skoro coś działa „na serwerze”, to może wymaga .NET, Javy, PHP – wszystko jedno. Tymczasem każdy CMS jest pisany w konkretnej technologii i wymaga zgodnego z nią środowiska. Joomla! nie wykorzystuje ASP.NET ani bibliotek .NET, więc platforma .NET nie jest jej potrzebna do niczego. Można mieć serwer z zainstalowanym .NET, ale jeśli nie ma tam PHP i odpowiedniej bazy danych, Joomla! i tak nie ruszy. Z mojego doświadczenia warto zawsze zaczynać od sprawdzenia, w jakim języku napisane jest dane oprogramowanie webowe i pod to dobierać stos serwerowy, zamiast zakładać, że każda aplikacja webowa wymaga .NET tylko dlatego, że kojarzy się on z „nowoczesnym” serwerem.

Pytanie 36

Oznaczenie barwy w postaci #FF00E0 jest równoważne zapisowi

A. rgb(FF, 0, E0)
B. rgb(F, 0, E0)
C. rgb(255, 0, 224)
D. rgb(255, 0, 128)
Zapis #FF00E0 to klasyczny przykład koloru w notacji szesnastkowej, używanej w CSS i ogólnie w webdesignie. Cały haczyk polega na tym, że te literki i cyfry nie są traktowane jako tekst, tylko jako liczby w systemie o podstawie 16. Każde dwa znaki odpowiadają jednej składowej koloru: czerwonej, zielonej i niebieskiej. Czyli mamy strukturę: #RRGGBB. W tym konkretnym przypadku RR = FF, GG = 00, BB = E0.

Częsty błąd polega na traktowaniu tych liter dosłownie, jak w odpowiedziach typu rgb(F, 0, E0) czy rgb(FF, 0, E0). W zapisie rgb() wartości muszą być liczbami dziesiętnymi z zakresu 0–255, a nie ciągami znaków. Przeglądarka oczekuje tam konkretnych wartości natężenia składowych, a nie kodu szesnastkowego. FF to nie symbol, tylko liczba w systemie hex. Żeby ją poprawnie zinterpretować, trzeba przeliczyć ją na system dziesiętny: F to 15, więc FF = 15×16 + 15 = 255. Podobnie z E0: E to 14, więc E0 = 14×16 + 0 = 224. Z mojego doświadczenia to przeliczanie jest źródłem wielu pomyłek, szczególnie na początku nauki.

Inny typowy błąd myślowy to zgadywanie wartości na oko, jak w odpowiedzi rgb(255, 0, 128). Ktoś widzi intensywny kolor, więc daje maksymalny czerwony i jakąś średnią wartość niebieskiego. Problem w tym, że hex E0 to wcale nie jest 128, tylko 224, czyli dużo bliżej maksimum 255 niż środka skali. Takie „strzelanie” bez przeliczenia łamie spójność pomiędzy zapisem hex a rgb i prowadzi do zupełnie innego koloru niż zamierzony.

Dobra praktyka w branży jest taka, żeby zawsze pamiętać: zapis hex to trzy liczby 0–255 zapisane w bazie 16, a rgb() to te same liczby zapisane normalnie, po ludzku, w systemie dziesiętnym. Jeżeli pojawiają się litery A–F, to znaczy, że mamy do czynienia z systemem szesnastkowym i trzeba je potraktować jak cyfry 10–15, a nie jako jakiś tekst. To niby drobiazg, ale w pracy front-endowca albo grafika webowego ma ogromne znaczenie, bo precyzja kolorów jest kluczowa dla spójności całego projektu graficznego.

Pytanie 37

W systemie baz danych sklepu komputerowego znajduje się tabela o nazwie komputery. Aby stworzyć raport pokazujący dane z tabeli, obejmujący tylko komputery z co najmniej 8 GB pamięci oraz procesorem Intel, można wykorzystać kwerendę

A. SELECT * FROM komputery WHERE procesor = 'Intel' AND pamiec >= 8;
B. SELECT * FROM komputery WHERE procesor = 'Intel' AND pamiec < 8
C. SELECT * FROM komputery WHERE procesor = 'Intel' OR pamiec >= 8;
D. SELECT * FROM komputery WHERE procesor = 'Intel' OR pamiec < 8
Wybrana kwerenda SELECT * FROM komputery WHERE procesor = 'Intel' AND pamiec >= 8; jest prawidłowa, ponieważ precyzyjnie spełnia wymagania dotyczące filtracji danych w tabeli komputery. Użycie operatora AND jest kluczowe w tej sytuacji, ponieważ umożliwia jednoczesne sprawdzenie dwóch warunków: pierwszy warunek wymaga, aby procesor był równy 'Intel', a drugi, aby pamięć RAM była większa lub równa 8 GB. W rezultacie kwerenda zwróci tylko te rekordy, które spełniają oba kryteria, co jest zgodne z założeniem raportu. W praktyce, tego typu kwerendy są niezwykle ważne, szczególnie w kontekście analizy danych, gdzie precyzyjne określenie kryteriów jest kluczowe dla uzyskania wartościowych wyników. Dobre praktyki w tworzeniu zapytań SQL obejmują także wykorzystanie odpowiednich indeksów na kolumnach procesor i pamiec, co może znacznie zwiększyć wydajność zapytań, zwłaszcza w dużych zbiorach danych.

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. atrybut typu tekstowego zawierający informacje o autorze
B. atrybut używany w relacji z tabelą dane
C. kluczem podstawowym tabeli ksiazka
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

Polecenie MySQL pokazane poniżej spowoduje, że użytkownikowi tkowal zostaną odebrane określone uprawnienia:

REVOKE DELETE, UPDATE ON pracownicy FROM 'tkowal'@'localhost';
A. przydzielone uprawnienia do wszelkich zmian struktury tabeli pracownicy
B. odebrane uprawnienia do usuwania i modyfikacji danych w tabeli pracownicy
C. odebrane uprawnienia do usuwania i dodawania rekordów w tabeli pracownicy
D. przydzielone uprawnienia do usuwania oraz aktualizacji danych w tabeli pracownicy
Polecenie REVOKE w MySQL jest używane do cofania praw dostępu, które wcześniej zostały przyznane użytkownikowi. W zapytaniu REVOKE DELETE UPDATE ON pracownicy FROM tkowal@localhost cofamy prawa do usuwania i aktualizowania danych w tabeli pracownicy użytkownikowi o nazwie tkowal. To konkretne polecenie wskazuje, że wspomniane uprawnienia były wcześniej nadane temu użytkownikowi i teraz administrator bazy danych postanowił je cofnąć. Revoke jest kluczowe w zarządzaniu bezpieczeństwem i kontrolą dostępu w systemach baz danych zwłaszcza gdy potrzeby biznesowe lub polityka bezpieczeństwa wymagają ograniczenia możliwości użytkowników MySQL. Praktycznym przykładem może być sytuacja w której pracownik o niższym poziomie uprawnień nie powinien modyfikować lub usuwać kluczowych danych w bazie co zabezpiecza dane przed nieautoryzowanymi zmianami. Dobre praktyki branżowe zalecają regularne przeglądy uprawnień i ich aktualizację tak aby były one zgodne z aktualnymi potrzebami operacyjnymi i polityką bezpieczeństwa organizacji. Zarządzanie uprawnieniami w bazach danych jest fundamentalnym elementem bezpieczeństwa IT.

Pytanie 40

Jak nazywa się proces, w trakcie którego identyfikuje się oraz eliminuje błędy w kodzie źródłowym aplikacji?

A. standaryzacja
B. Kompilacja
C. Debugowanie
D. Normalizacja
Kompilowanie to proces, który przekształca kod źródłowy napisany w języku wysokiego poziomu w kod maszynowy, który jest zrozumiały dla komputera. W trakcie kompilacji mogą wystąpić błędy składniowe, jednak kompilacja nie zajmuje się usuwaniem błędów logicznych, które mogą pojawić się w działającym programie. Stąd też nie jest to tożsame z procesem debugowania, który koncentruje się na wykrywaniu oraz eliminacji błędów w kodzie już skompilowanym. Standaryzacja odnosi się do procesu ustalania norm i standardów dla określonych praktyk lub produktów, co ma na celu zapewnienie ich jakości i interoperacyjności, ale nie dotyczy bezpośrednio błędów w kodzie. Normalizacja z kolei jest terminem używanym w różnych kontekstach, ale w programowaniu odnosi się często do formatu danych lub struktury, co również nie ma bezpośredniego związku z procesem wykrywania i usuwania błędów. Wybierając niewłaściwe odpowiedzi, można popaść w pułapkę myślenia, które nie uwzględnia różnicy pomiędzy różnymi etapami tworzenia oprogramowania. Każdy z wymienionych procesów ma swoje unikalne funkcje i cel, które są istotne w kontekście inżynierii oprogramowania, ale tylko debugowanie koncentruje się na naprawie błędów w kodzie, co czyni je kluczowym elementem w utrzymaniu jakości produktów programistycznych.