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: 14 lipca 2026 14:09
  • Data zakończenia: 14 lipca 2026 14:27

Egzamin zdany!

Wynik: 29/40 punktów (72,5%)

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

Jakie jest właściwe określenie stylu CSS dla przycisku typu submit z czarnym tłem, bez ramki oraz z marginesami wewnętrznymi równymi 5 px?

input[type=submit] {
    background-color: #000000;
    border: none;
    padding: 5px;
} A
input[type=submit] {
    background-color: #ffffff;
    border: none;
    padding: 5px;
} B
input=submit {
    background-color: #000000;
    border: none;
    margin: 5px;
} C
input=submit {
    background-color: #000000;
    border: 0px;
    margin: 5px;
} D
A. D
B. C
C. B
D. A
Niepoprawne odpowiedzi wynikają głównie z błędnego użycia właściwości CSS lub z nieprawidłowej struktury selektora. W odpowiedzi B mamy kolor tła #ffffff, a to nie spełnia wymogu czarnego tła. To może być spowodowane nieuwagą albo brakiem zrozumienia wymagań. Odpowiedzi C i D z kolei używają margin zamiast padding, co zdecydowanie jest błędem w kontekście tego pytania. Margin dotyczy zewnętrznych odstępów między elementami i nie ma wpływu na wewnętrzne wymiary przycisku, co może efektem być brzydki wygląd przycisku w interfejsie. Ponadto w odpowiedziach C i D widzimy niepoprawny format selektora input=submit; co jest syntaktycznie złe. Poprawna składnia to input[type=submit], bo to wskazuje na element formularza o typie submit. Nie zrozumienie różnicy miedzy padding a margin oraz selektorami CSS może prowadzić do zamieszania i problemów w stylizacji. Ważne jest, żeby każda właściwość CSS była używana z pełnym zrozumieniem, jak wpływa na elementy interfejsu, by osiągnąć zamierzony efekt wizualny i funkcjonalny. Dobrą praktyką jest też sprawdzenie styli w różnych przeglądarkach, żeby upewnić się, że wszystko działa jak należy w różnych środowiskach. Rozumienie i stosowanie CSS jest kluczowe, by tworzyć profesjonalne i funkcjonalne strony.

Pytanie 2

W SQL warunek ten odpowiada warunkowi liczba >= 10 AND liczba <= 100?

A. liczba IN (10, 100)
B. liczba LIKE '10%'
C. liczba BETWEEN 10 AND 100
D. NOT (liczba < 10 AND liczba > 100)
Odpowiedź 'liczba BETWEEN 10 AND 100' jest prawidłowa, ponieważ odpowiada warunkowi, który sprawdza, czy wartość zmiennej 'liczba' mieści się w przedziale od 10 do 100, włączając oba końce. W SQL konstrukcja 'BETWEEN' jest preferowana, ponieważ jest bardziej czytelna i zrozumiała dla programistów, co sprzyja utrzymaniu kodu. Przykładowe zapytanie SQL używające tego warunku mogłoby wyglądać tak: 'SELECT * FROM tabela WHERE liczba BETWEEN 10 AND 100;'. Zastosowanie 'BETWEEN' unika potencjalnych błędów związanych z używaniem operatorów porównawczych i zapewnia, że obie granice przedziału są respektowane. W praktyce, korzystanie z 'BETWEEN' w zapytaniach SQL jest zgodne z dobrymi praktykami programowania, gdyż poprawia czytelność i ułatwia analizę kodu. Dodatkowo, warto zauważyć, że 'BETWEEN' działa również z datami, co czyni go uniwersalnym narzędziem w SQL.

Pytanie 3

Po wykonaniu poniższego kodu PHP, w zmiennej $napis znajduje się tekst:

$napis = "Programowanie w PHP";
$napis = substr($napis, 3, 5);
A. gr
B. ogram
C. gramo
D. og
Wybór odpowiedzi 'gr' lub 'og' oraz 'ogram' jest wynikiem nieporozumienia dotyczącego działania funkcji substr() w PHP. Funkcja ta nie zwraca pierwszych kilku znaków z łańcucha, lecz podciąg zaczynający się od określonego indeksu. W przypadku odpowiedzi 'gr', wydaje się, że koncentrujesz się na pierwszych dwóch znakach od momentu, gdy substr() zaczyna od indeksu 3, co jest błędne. Indeks 3 w łańcuchu 'Programowanie w PHP' wskazuje na literę 'g', a nie zawiera żadnych liter przed nią. Z kolei odpowiedź 'og' pomija literę 'r', co również jest błędne. Natomiast wybór 'ogram' może wynikać z mylnego przekonania, że substr() zwraca więcej znaków, niż rzeczywiście to robi. Funkcja substr() działa na zasadzie podawania precyzyjnych wartości, które określają, od którego znaku zacząć i ile znaków wyodrębnić. Dlatego kluczowe jest zrozumienie indeksowania w PHP oraz tego, jak funkcja substr() interpretuje te wartości. Zrozumienie tych zasad jest istotne, zwłaszcza przy pracy z danymi tekstowymi, gdzie precyzyjne operacje są niezbędne do poprawnego przetwarzania i manipulacji łańcuchami znaków. Warto także zwrócić uwagę na dokumentację PHP, aby lepiej poznać inne parametry i możliwości funkcji substr() oraz jej zastosowania w kontekście programowania webowego. Zastosowanie takich funkcji w praktyce pozwala na bardziej efektywne zarządzanie danymi, co jest kluczowe w projektach programistycznych.

Pytanie 4

Tabela samochody zawiera dane przedstawione poniżej:

idklasa_idmarkamodelrocznik
11fordka2017
22seattoledo2016
33opelzafira2018
42fiat500X2018
53opelinsignia2017
Wydając zamieszczone zapytanie SQL, jakie dane zostaną zwrócone:
SELECT model FROM samochody WHERE rocznik > 2017 AND marka = "opel";
A. zafira
B. zafira; insignia
C. opel zafira; opel insignia
D. opel zafira
Poprawna odpowiedź to 'zafira', ponieważ zapytanie SQL odnosi się do modelu samochodu marki 'opel', którego rocznik jest większy niż 2017. Z analizy danych w tabeli wynika, że tylko model 'opel zafira' (z rocznika 2018) spełnia te warunki. Odpowiedzi 'opel zafira', 'zafira; insignia', 'opel zafira; opel insignia' zawierają dodatkowe informacje, które nie są zgodne z wymaganiami zapytania. Dobrym przykładem zastosowania takiej analizy jest filtrowanie danych w bazach danych, co jest kluczowym procesem w zarządzaniu informacjami. Efektywne posługiwanie się zapytaniami SQL to umiejętność istotna w pracy każdego analityka danych, programisty, czy specjalisty w zakresie baz danych, ponieważ pozwala na wyciąganie precyzyjnych informacji zgodnych z wymaganiami biznesowymi.

Pytanie 5

Aby przenieść pliki strony internetowej na serwer, można skorzystać z programu:

A. FileZilla
B. Bugzilla
C. Go!Zilla
D. CloneZilla
FileZilla to popularny, darmowy klient FTP, FTPS i SFTP. Umożliwia przesyłanie plików między komputerem a serwerem, dlatego używa się go do publikacji witryny: po połączeniu z kontem na serwerze kopiuje się pliki strony do właściwego katalogu. Obsługuje połączenia szyfrowane i wznawianie transferu. To typowe narzędzie do wdrażania strony, więc poprawną odpowiedzią jest FileZilla.

Pytanie 6

Wszelkie dane, które dostarczają informacji o innych danych, nazywane są

A. metalanguage.
B. markup language.
C. metadata.
D. databus.
Poprawna odpowiedź to „metadata”, czyli po polsku metadane. Metadane to wszystkie dane, które opisują inne dane. Można powiedzieć, że są to „informacje o informacji”. Przykład z życia: plik zdjęcia JPG. Sam obraz to dane, a takie elementy jak data wykonania, model aparatu, rozdzielczość, lokalizacja GPS, autor – to właśnie metadane zapisane np. w formacie EXIF. Podobnie w świecie WWW: w dokumencie HTML mamy sekcję <head>, a w niej znaczniki <meta>. Te znaczniki nie są wyświetlane użytkownikowi jako treść strony, ale przekazują wyszukiwarkom i przeglądarkom informacje o stronie, np. opis, słowa kluczowe, kodowanie znaków, język. To jest klasyczny przykład metadanych w praktyce. W bazach danych metadane to np. definicje tabel, typy kolumn, klucze główne, indeksy, ograniczenia. System zarządzania bazą danych przechowuje je w tzw. katalogach systemowych. Dzięki temu wie, jak interpretować rekordy, jakie są relacje między tabelami, jakie są dopuszczalne wartości. Bez metadanych dane byłyby po prostu chaotycznym zbiorem bitów, z którego niewiele da się wyciągnąć. W standardach branżowych stosuje się różne schematy metadanych, np. Dublin Core dla zasobów cyfrowych, czy schema.org dla stron internetowych, aby wyszukiwarki lepiej rozumiały zawartość. Z mojego doświadczenia warto od początku myśleć o metadanych jako o czymś, co podnosi jakość systemu: ułatwia wyszukiwanie, integrację, automatyczne przetwarzanie danych. Dobra praktyka jest taka, żeby dla ważnych zasobów (pliki, rekordy w bazie, strony WWW, API) zawsze planować strukturę metadanych: kto utworzył, kiedy, jaki typ, wersja, status. To bardzo pomaga przy utrzymaniu aplikacji, debugowaniu i rozwoju systemu.

Pytanie 7

W formularzu, wartości z pola input o typie number zostały przypisane do zmiennej a, a następnie przetworzone w skrypcie JavaScript w pokazany sposób. Jaki typ będzie miała zmienna x?

var x = parseInt(a);
A. liczbowy, całkowity
B. NaN
C. zmiennoprzecinkowy
D. napisowy
Funkcja parseInt() w JavaScript jest super przydatna, bo pozwala zamienić ciąg znaków na liczbę całkowitą. Jak masz zmienną a, która bierze dane z inputu typu number, to parseInt() łapie te liczby i wyrzuca wszystko, co nie jest cyfrą. Dzięki temu dostajesz liczby całkowite. Warto wiedzieć, że ta funkcja nie zaokrągla wyników, tylko obcina część dziesiętną. To świetna opcja, gdy potrzebujesz tylko całkowitych wartości. parseInt() dobrze działa w programowaniu – często wykorzystuje się go do walidacji i manipulacji liczbami. Z mojego doświadczenia, kiedy pracujesz z różnymi typami danych, musisz zadbać, żeby przekształcenia były na miejscu, bo to bardzo ważne dla aplikacji. Użycie parseInt() jest zgodne z zasadami ECMAScript, co oznacza, że działa w różnych środowiskach JavaScript. Przykładem dobrego zastosowania są aplikacje webowe, gdzie często potrzebujesz liczb całkowitych, na przykład w kalkulatorach czy formularzach z wyborem ilości produktów.

Pytanie 8

Warunek zapisany w JavaScript jest prawdziwy, gdy zmienna x przechowuje:

if ((!isNaN(x)) && (x > 0))
A. dowolną całkowitą wartość liczbową.
B. dowolną dodatnią wartość liczbową.
C. pusty napis.
D. napis.
Poprawnie wyłapałeś, że ten warunek jest prawdziwy tylko wtedy, gdy x przechowuje dodatnią wartość liczbową. Rozbijmy to na części. Funkcja isNaN(x) w JavaScript sprawdza, czy przekazany argument „nie jest liczbą” (NaN = Not a Number). Zapis z wykrzyknikiem: !isNaN(x) oznacza więc „x jest liczbą lub da się go zinterpretować jako liczbę”. Druga część warunku: (x > 0) wymusza, żeby ta wartość była większa od zera, czyli dodatnia. Operator && (AND logiczne) powoduje, że oba warunki muszą być spełnione jednocześnie. W efekcie if wykona się tylko wtedy, gdy x reprezentuje dodatnią liczbę (np. 1, 3.14, 100, 0.0001). Co ważne, w JavaScript !isNaN("5") też będzie prawdą, bo łańcuch "5" zostanie zrzutowany do liczby, więc w praktyce ten warunek przepuści zarówno typ number, jak i tekst, który da się przekonwertować na liczbę dodatnią. W realnych projektach taką konstrukcję stosuje się np. przy walidacji pól formularza: sprawdzamy, czy użytkownik podał sensowną wartość liczbową (np. cena, ilość sztuk, wiek) i czy nie jest ona ujemna albo zerowa. Z mojego doświadczenia lepiej jednak korzystać z Number.isNaN() i jawnie rzutować dane (np. const value = Number(x)), bo klasyczne isNaN ma parę „dziwnych” zachowań wynikających z automatycznych konwersji typów w JS. Mimo to logika w tym zadaniu jest typowa i zgodna z dobrymi praktykami: najpierw walidacja typu/wartości, potem dopiero dalsza logika biznesowa.

Pytanie 9

Cookie stworzony za pomocą polecenia PHP

setcookie("osoba", "Anna Kowalska", time() + (3600 * 24));
A. wygaśnie po jednej godzinie od momentu jego utworzenia
B. będzie przechowywany na serwerze przez 24 godziny
C. będzie przechowywany na serwerze przez jedną godzinę
D. wygaśnie po dobie od momentu jego utworzenia
Wybór odpowiedzi, że ciasteczko wygaśnie po jednej godzinie od jego utworzenia, jest błędny, ponieważ czas wygaśnięcia ciasteczka jest jasno określony w wywołaniu funkcji setcookie(). Przypisanie wartości time() + (3600 * 24) oznacza, że ciasteczko będzie ważne przez 24 godziny, a nie jedną. Pojęcia związane z czasem życia ciasteczek są kluczowe w kontekście zarządzania sesjami i stanami użytkowników w aplikacjach webowych. Wiele osób myli jednostki czasu, co prowadzi do nieprawidłowych założeń dotyczących działania ich aplikacji. Kolejny błąd polega na przeświadczeniu, że ciasteczka są przechowywane na serwerze, gdy w rzeczywistości są one zapisywane na komputerze użytkownika. Serwer ustala zasady dotyczące ciasteczek, ale ich fizyczne miejsce przechowywania to urządzenie klienckie. Często zdarza się również, że użytkownicy nie są świadomi, jak długo ciasteczka mogą pozostać aktywne, co wpływa na ich doświadczenia i może prowadzić do nieporozumień w kontekście logowania czy ustawień prywatności. W związku z tym właściwe zrozumienie działania i życia ciasteczek jest kluczowe dla zapewnienia prawidłowego funkcjonowania aplikacji oraz ochrony danych użytkowników.

Pytanie 10

Który opis dotyczy metody POST przesyłania formularza?

A. jest zalecana przy przesyłaniu danych wrażliwych (hasło, numer karty)
B. można ją zapisać jako zakładkę w przeglądarce
C. dane są przesyłane w adresie URL, widoczne dla użytkownika
D. ma ograniczenie długości adresu do 255 znaków
Metoda POST przesyła dane w treści żądania (a nie w adresie URL), więc nie są one widoczne w pasku adresu - dlatego zaleca się ją dla danych wrażliwych, jak hasło czy numer karty. Dlatego POST jest zalecana przy danych wrażliwych.

Pytanie 11

Wartość atrybutu w tabeli, który pełni rolę klucza głównego

A. musi być unikalna
B. jest używana do szyfrowania zawartości tabeli
C. nigdy nie jest innego typu niż numeryczny
D. może przyjmować wartość null (NULL)
Klucz podstawowy w bazach danych to coś, co naprawdę musi być unikalne, żeby każda informacja w tabeli była dobrze zidentyfikowana. Przykładowo, w tabeli 'Klienci' mamy kolumnę 'ID_klienta'. To jest dobry klucz podstawowy, bo każdy klient musi mieć swój własny numer, żeby nie było sytuacji, gdzie dwóch klientów ma ten sam identyfikator. Gdyby klucz podstawowy był taki sam dla różnych rekordów, mogłoby to wywołać spore zamieszanie przy aktualizacjach czy usuwaniu danych. Warto też pamiętać, że są takie rzeczy jak indeksy, które mogą pomóc w zapewnieniu, że klucz podstawowy jest unikalny i przyspiesza wyszukiwanie danych. Można użyć kluczy naturalnych, które mają sens w kontekście danych, albo kluczy syntetycznych, które system tworzy sam, jak na przykład GUID-y. Z mojego doświadczenia, to znajomość tych zasad naprawdę pomaga w lepszym projektowaniu baz danych.

Pytanie 12

W HTML, aby dodać obrazek z tekstem przylegającym, umiejscowionym na środku obrazka, trzeba użyć znacznika

A. <img src="/obrazek.png" alt="obraz4">tekst
B. <img src="/obrazek.png" alt="obraz1" hspace="30px">tekst
C. <img src="/obrazek.png" alt="obraz3" height="50%">tekst
D. <img src="/obrazek.png" alt="obraz2" align="middle">tekst
Aby wstawić obrazek z tekstem przyległym w HTML, należy skorzystać ze znacznika <img> z atrybutem align ustawionym na 'middle'. Atrybut align jest przestarzały w HTML5, ale nadal może być używany w kontekście tekstów przylegających do obrazków. Ustawiając 'middle', obrazek będzie wyśrodkowany w pionie względem linii tekstu, co pozwala na estetyczne umiejscowienie obrazu w odniesieniu do towarzyszącego mu tekstu. Dobrym przykładem jest zastosowanie <img src='/obrazek.png' alt='obraz2' align='middle'>tekst, co sprawia, że obrazek staje się integralną częścią tekstu, a nie tylko jego dodatkiem. W kontekście standardów, warto zauważyć, że HTML5 zaleca stosowanie CSS do pozycjonowania, dlatego bardziej współczesnym podejściem byłoby użycie stylów CSS, np. 'vertical-align: middle'. Można to osiągnąć poprzez dodanie klasy do obrazka oraz odpowiedniego stylu CSS. Chociaż align jest przestarzały, jego rozumienie jest istotne dla osób przystosowujących starsze strony do nowych standardów.

Pytanie 13

W języku SQL aby zmodyfikować dane w tabeli, należy posłużyć się poleceniem

A. UPDATE
B. SELECT
C. JOIN
D. CREATE
Polecenie UPDATE to w SQL podstawowe narzędzie do modyfikowania istniejących danych w tabelach. W praktyce oznacza to, że jeśli chcesz np. zmienić wartość jakiegoś pola dla wybranego rekordu, to właśnie tego polecenia używasz. Przykład z życia: masz tabelę pracowników i ktoś zmienił numer telefonu – nie robisz nowego wpisu, nie tworzysz nowej tabeli, tylko aktualizujesz jedną kolumnę w odpowiednim wierszu. Składnia tego polecenia jest dość intuicyjna: UPDATE nazwa_tabeli SET kolumna=nowa_wartość WHERE warunek. Bardzo ważne jest stosowanie klauzuli WHERE, bo inaczej możesz przez przypadek podmienić dane we wszystkich wierszach tabeli, co niestety zdarza się nawet doświadczonym programistom, zwłaszcza przy pracy na środowiskach testowych. Warto wiedzieć, że SQL-92 (czyli jeden z najważniejszych standardów języka SQL) dokładnie opisuje sposób działania tego polecenia. Często w praktyce spotyka się też połączenie UPDATE z transakcjami, żeby mieć możliwość cofnięcia zmian, gdyby coś poszło nie tak. Moim zdaniem umiejętne stosowanie UPDATE to podstawa pracy z bazami danych – prawie każdy większy system korzysta z tego polecenia na co dzień. Dobrze też pamiętać o bezpieczeństwie i zawsze sprawdzać, czy warunek w WHERE jest poprawny, żeby nie napsuć w danych. Praktyka czyni mistrza i z czasem takie operacje wchodzą w krew.

Pytanie 14

Która technika rozwiązywania konfliktów w firmie bywa niebezpieczna i może ZAOSTRZYĆ konflikt?

A. ignorowanie
B. arbitraż
C. separacja
D. kompromis
Ignorowanie konfliktu polega na udawaniu, że problemu nie ma - i właśnie dlatego bywa groźne: nierozwiązana sprawa narasta, emocje się kumulują, a strona, która czuje się lekceważona, reaguje coraz ostrzej. Zamiast wygasić spór, takie unikanie zwykle go zaostrza. Dlatego niebezpieczną techniką jest ignorowanie.

Pytanie 15

Na podstawie filmu wskaż, która cecha dodana do stylu CSS zamieni miejscami bloki aside i nav, pozostawiając w środku blok section?

A. nav { float: right; }
B. aside {float: left; }
C. nav { float: right; } section { float: right; }
D. nav { float: left; } aside { float: left; }
Prawidłowa odpowiedź opiera się na tym, jak działają własności float w CSS i w jakiej kolejności przeglądarka renderuje elementy blokowe. Jeśli w dokumencie HTML kolejność znaczników to np. &lt;aside&gt;, potem &lt;section&gt;, a na końcu &lt;nav&gt;, to bez dodatkowego stylowania wszystkie trzy ustawią się pionowo, jeden pod drugim, w tej właśnie kolejności. Dodanie float zmienia sposób, w jaki elementy „odpływają” od normalnego przepływu dokumentu i jak układają się obok siebie.

W stylu nav { float: right; } section { float: right; } sprawiamy, że zarówno nav, jak i section są przesuwane do prawej krawędzi kontenera, natomiast aside (bez float) pozostaje w normalnym przepływie, czyli z lewej strony. Ponieważ przeglądarka układa elementy w kolejności występowania w kodzie, najpierw wyrenderuje aside po lewej, potem section „odpłynie” w prawo, a na końcu nav też „odpłynie” w prawo, ustawiając się po prawej stronie, ale dalej od góry niż section. Efekt wizualny jest taki, że po lewej mamy aside, po prawej nav, a section ląduje między nimi, dokładnie tak jak było pokazane na filmie.

Moim zdaniem to zadanie dobrze pokazuje, że przy floatach zawsze trzeba myśleć o trzech rzeczach naraz: kolejności elementów w HTML, kierunku „pływania” (left/right) oraz o tym, które elementy pozostawiamy w normalnym przepływie. W praktyce w nowoczesnych projektach częściej używa się flexboxa albo CSS Grid do takich układów, bo są czytelniejsze i mniej problematyczne. Przykładowo, zamiast kombinować z float, można by użyć display: flex; na kontenerze i ustawić order dla aside i nav. Float nadal jednak pojawia się w starszych layoutach i w zadaniach egzaminacyjnych, więc warto dobrze rozumieć jego zachowanie, choćby po to, żeby poprawnie modyfikować istniejące style lub naprawiać „rozjechane” układy w starszych projektach.

Pytanie 16

Kod programu wraz z komentarzami oraz opisem algorytmów i metod stanowi dokumentację

A. graficzną.
B. urzędową.
C. audiowizualną.
D. techniczną.
Poprawnie – mówimy tutaj o dokumentacji technicznej. Kod programu razem z komentarzami w kodzie, opisem algorytmów, struktur danych, interfejsów, sposobu działania poszczególnych modułów czy klas to właśnie klasyczny przykład dokumentacji technicznej. W branży IT przyjmuje się, że dokumentacja techniczna jest skierowana głównie do programistów, administratorów, czasem też architektów systemów, czyli osób, które będą rozwijać, utrzymywać lub integrować dany system. Nie jest to materiał marketingowy ani „urzędowy”, tylko coś, co ma pomóc zrozumieć jak system działa od środka.
W praktyce dokumentacja techniczna obejmuje na przykład: komentarze w kodzie źródłowym (zgodne z konwencją danego języka, np. PHPDoc, JSDoc), opisy algorytmów w plikach README, wiki projektowe, diagramy UML, schematy przepływu danych, opisy endpointów API, a nawet instrukcje uruchomienia środowiska developerskiego. Moim zdaniem im lepiej zrobiona taka dokumentacja, tym łatwiej jest później komuś „wejść” w projekt bez zadawania dziesiątek pytań.
Dobre praktyki mówią, żeby dokumentacja techniczna była aktualna, wersjonowana razem z kodem (np. w Git), a komentarze w kodzie nie powtarzały tego, co oczywiste, tylko wyjaśniały „dlaczego tak”, a nie „co robi ta linijka”. W projektach webowych dokumentacja techniczna opisuje na przykład, jak działa logika logowania użytkownika, jak są zrobione zapytania do bazy, jakie są ograniczenia wydajnościowe. To wszystko pozwala utrzymać spójność systemu i ułatwia debugowanie oraz rozwój nowych funkcji.
Dlatego odpowiedź „techniczną” jest jak najbardziej zgodna z tym, jak branża rozumie dokumentację w kontekście programowania i algorytmów.

Pytanie 17

Który z atrybutów obrazu jest niezbędny w znaczniku

<img src="nowa_lektura.jpg" ...>
aby ułatwić korzystanie ze strony użytkownikom z niepełnosprawnością narządu wzroku?
A. align="middle"
B. alt="technik informatyk"
C. "height="42" width="42"
D. usemap="#lekturamap"
Prawidłowy atrybut to alt="technik informatyk", bo właśnie atrybut alt opisuje treść lub funkcję obrazu i jest kluczowy dla dostępności (accessibility). Czytniki ekranu, z których korzystają osoby niewidome lub słabowidzące, nie „widzą” grafiki – one odczytują tekst alternatywny. Jeśli alt jest dobrze uzupełniony, użytkownik wie, co przedstawia obraz, albo jaką pełni funkcję (np. przycisk, link, ikona). Bez tego opisowego tekstu obraz jest dla takiej osoby po prostu pustym miejscem na stronie. Z punktu widzenia standardów W3C i WCAG jest to jedna z absolutnie podstawowych dobrych praktyk. W wytycznych WCAG 2.x masz wprost zapisane, że treści nietekstowe muszą mieć tekst alternatywny. W praktyce: dla zdjęcia osoby można dać alt="Nauczyciel programowania przy komputerze", dla logo firmy alt="Logo firmy X" (albo pusty alt, jeśli logo jest tylko dekoracją, ale wtedy ważne są inne konteksty), dla przycisku w formie ikonki lupy alt="Szukaj". Moim zdaniem w realnych projektach najczęstszy błąd to wrzucanie przypadkowych tekstów w alt albo zostawianie go pustego, bo „przecież widać na obrazku”. Właśnie w takich sytuacjach użytkownik z niepełnosprawnością jest totalnie wykluczony. Dobrze opisany alt pomaga też, gdy grafika się nie załaduje (słaby internet, błąd ścieżki), bo przeglądarka wyświetli tekst zamiast obrazka. Warto też pamiętać, żeby nie powtarzać w alt tego, co już widać w podpisie bezpośrednio obok, tylko raczej go uzupełnić. W skrócie: alt jest obowiązkowy z punktu widzenia dostępności i jakościowo napisany tekst alternatywny to znak profesjonalnie zrobionej strony WWW.

Pytanie 18

Który z grafikowych formatów umożliwia zapis przezroczystego tła?

A. JPEG
B. BMP
C. RAW
D. GIF
RAW to format, który przechowuje dane obrazu w formie nieprzetworzonej, co oznacza, że nie zawiera informacji o przejrzystości. Pliki RAW są wykorzystywane głównie w profesjonalnej fotografii, gdzie istotne jest zachowanie jak największej ilości szczegółów w obrazie, jednak nie oferują one żadnej funkcji przejrzystości, co czyni je nieodpowiednimi do zastosowań, gdzie przezroczystość tła jest kluczowa. BMP (Bitmap) to kolejny format, który nie wspiera przezroczystości. Jest to format bezstratny, który przechowuje szczegółowe informacje o każdym pikselu, ale nie umożliwia określenia żadnego koloru jako przezroczystego. BMP jest szeroko stosowany w aplikacjach graficznych, jednak jego duża objętość plików oraz brak wsparcia dla przezroczystości ogranicza jego zastosowanie w sieci. JPEG to format skompresowany, który również nie obsługuje przejrzystości. Chociaż JPEG jest świetny do przechowywania zdjęć ze względu na jego zdolność do kompresji z zachowaniem jakości, nie jest w stanie zapisać informacji o przezroczystości, co czyni go mało użytecznym w sytuacjach, w których wymagane jest zastosowanie przezroczystego tła. W związku z tym, dla projektów wymagających przezroczystości, format GIF pozostaje najlepszym wyborem.

Pytanie 19

Jakie imiona spełniają warunki klauzuli LIKE w podanym zapytaniu?

SELECT imie FROM mieszkancy WHERE imie LIKE '_r%';
A. Gerald, Jarosław, Marek, Tamara
B. Rafał, Rebeka, Renata, Roksana
C. Arleta, Krzysztof, Krystyna, Tristan
D. Krzysztof, Krystyna, Romuald
No, więc ta odpowiedź jest totalnie na miejscu, bo klauzula LIKE w SQL służy do szukania ciągów, które pasują do jakiegoś wzoru. W tym przypadku wzór '_r%' mówi nam, że przed literą 'r' musi być dokładnie jeden dowolny znak, a po 'r' może być cokolwiek. Jak spojrzymy na imiona, które wybrałeś, 'Arleta' i 'Krzysztof' mają 'r' na drugiej pozycji, a 'Krystyna' i 'Tristan' na trzeciej. Czyli wszystko się zgadza. W ogóle, klauzula LIKE jest super przydatna w wyszukiwaniu danych, na przykład w aplikacjach, gdy chcemy znaleźć kogoś po imieniu czy nazwisku. A ten symbol '%' to genialny sposób na dopasowywanie, bo pozwala na różne kombinacje. Fajna sprawa, nie?

Pytanie 20

Określ rodzaj powiązania pomiędzy tabelami: Tabela1 oraz Tabela3

Ilustracja do pytania
A. Jeden do jednego
B. Jeden do wielu
C. Wiele do wielu
D. Wiele do jednego
Relacja wiele do wielu między tabelami Tabela1 i Tabela3 jest prawidłowym rozwiązaniem, ponieważ relacja ta umożliwia powiązanie wielu rekordów z jednej tabeli z wieloma rekordami z drugiej tabeli. W kontekście przedstawionego schematu baz danych, tabela Tabela1 przechowuje informacje o uczniach, podczas gdy Tabela3 zawiera dane o nauczycielach. Tabela2 pełni rolę tabeli pośredniej, zawierającej klucze obce, które łączą ID_Ucznia z ID_Nauczyciela za pomocą ID_Przedmiotu jako dodatkowego klucza. To podejście jest powszechnie stosowane w projektowaniu baz danych, aby zapewnić elastyczność i możliwość zaawansowanej analizy danych, np. którzy uczniowie mają zajęcia z jakimi nauczycielami. W praktyce takie rozwiązanie stosuje się w systemach edukacyjnych, gdzie każdy uczeń może uczęszczać na zajęcia prowadzone przez różnych nauczycieli, a każdy nauczyciel może prowadzić zajęcia dla wielu uczniów. Standardy projektowania relacyjnych baz danych, takie jak normalizacja, zalecają tego rodzaju architekturę, aby uniknąć redundancji danych i umożliwić efektywne zarządzanie złożonymi relacjami. Tabele pośrednie, takie jak Tabela2, są kluczowym elementem w tworzeniu relacji wiele do wielu, ponieważ umożliwiają mapowanie skomplikowanych powiązań w sposób technicznie poprawny i zrozumiały dla użytkowników systemu.

Pytanie 21

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

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

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

Pytanie 22

Jak nazywa się metoda, która pozwala na nawiązanie asynchronicznego połączenia klienta z serwerem oraz umożliwia wymianę danych bez konieczności przeładowania całej strony WWW?

A. PHP
B. VBScript
C. AJAX
D. XML
AJAX, czyli Asynchronous JavaScript and XML, to technika umożliwiająca asynchroniczną komunikację pomiędzy klientem a serwerem bez potrzeby przeładowania całej strony WWW. Umożliwia to tworzenie bardziej responsywnych i interaktywnych aplikacji internetowych. Przykładem zastosowania AJAX może być formularz kontaktowy, który po wypełnieniu wysyła dane do serwera i otrzymuje odpowiedź bez odświeżania całej strony, co poprawia doświadczenie użytkownika. Technologia ta wykorzystuje XMLHttpRequest lub Fetch API do przesyłania i odbierania danych w formacie JSON, co jest bardziej efektywne niż tradycyjne metody. AJAX jest szeroko stosowany w aplikacjach typu single-page, gdzie szybkość i wydajność są kluczowe. Warto również zwrócić uwagę na bezpieczeństwo przy korzystaniu z AJAX, takie jak walidacja danych wejściowych oraz ochrona przed atakami XSS i CSRF, które są standardami w branży.

Pytanie 23

Tablica tab[] jest wypełniona dowolnymi liczbami całkowitymi. Jaka wartość znajdzie się w zmiennej zm2 po wykonaniu prezentowanego fragmentu kodu?

int tab[10];
int zm1 = 0;
double zm2 = 0;

for (int i=0; i < 10; i++)
{
  zm1 = zm1 + tab[i];
}
zm2 = zm1 / 10;
A. Suma liczb od 1 do 10.
B. Średnia arytmetyczna elementów tablicy.
C. Suma elementów tablicy.
D. Średnia geometryczna liczb od 0 do 9.
Wynik zmiennej zm2 w przedstawionym kodzie to średnia arytmetyczna wartości znajdujących się w tablicy tab. Proces obliczania średniej arytmetycznej polega na zsumowaniu wszystkich elementów tablicy i podzieleniu tej sumy przez liczbę elementów. W tym przypadku zmienna zm1 akumuluje sumę wszystkich wartości tablicy tab, a następnie zmienna zm2 jest obliczana jako zm1 podzielone przez 10, co odpowiada liczbie elementów w tablicy. To podejście jest zgodne z dobrą praktyką programistyczną, ponieważ umożliwia efektywne obliczenie średniej, co jest powszechnie stosowane w analizie danych. W praktycznych zastosowaniach, takich jak przetwarzanie danych finansowych czy naukowych, umiejętność obliczania średnich jest kluczowa, umożliwiając podejmowanie świadomych decyzji na podstawie statystyk. Dodatkowo, warto zauważyć, że dla tablicy różnych typów danych, takich jak float czy double, technika obliczania średniej pozostaje taka sama, aczkolwiek wymaga uwzględnienia precyzji obliczeń.

Pytanie 24

Kolor zaprezentowany na ilustracji, zapisany w modelu RGB, w formacie szesnastkowym będzie określony w następujący sposób

Ilustracja do pytania
A. 76A3C1
B. 71A0B2
C. 77A0C1
D. 77A1C1
Błędne odpowiedzi wynikają z niepoprawnej konwersji wartości RGB na zapis szesnastkowy. Przy konwersji kolorów z modelu RGB na system szesnastkowy kluczowe jest poprawne przeliczenie każdej z trzech składowych: czerwonego zielonego i niebieskiego. Wartości te w modelu RGB wahają się od 0 do 255 co w systemie szesnastkowym odpowiada wartościom od 00 do FF. Niewłaściwe zrozumienie tego procesu prowadzi do błędnych wyników. W przykładzie wartość 119 dla czerwonego należy przeliczyć na 77 w systemie szesnastkowym. Podobnie 160 dla zielonego konwertuje się na A0 a 193 dla niebieskiego na C1. Powszechny błąd polega na pomyleniu wartości dziesiętnych z ich odpowiednikami szesnastkowymi bądź na niepoprawnym zaokrąglaniu podczas konwersji. Innym częstym błędem jest niepoprawne zrozumienie znaczenia kolejności zapisu gdzie każda para znaków odpowiada jednej składowej RGB. Aby uniknąć takich błędów warto korzystać z kalkulatorów konwersji lub narzędzi graficznych które automatycznie dokonują prawidłowej zamiany co jest zgodne z dobrymi praktykami projektowymi. Znajomość tych zasad jest kluczowa w pracy z grafiką komputerową i web designem gdzie precyzja w odwzorowaniu kolorów ma ogromne znaczenie dla ostatecznego wyglądu projektu.

Pytanie 25

Której właściwości CSS użyć, aby uzyskać kursywę (pochylenie tekstu)?

A.
font-style
B.
font-size
C.
font-family
D.
font-variant
font-size ustawia rozmiar, font-family krój, a font-variant warianty typu kapitaliki (small-caps) - żadna z nich nie pochyla tekstu. Kursywę daje font-style: italic.

Pytanie 26

Na co może wpływać rozmiar (waga) grafiki JPEG umieszczonej na stronie?

A. na zgodność z systemem Windows
B. na szybsze sprawdzanie odnośników
C. na czas ładowania strony
D. na błędy składniowe HTML
Każdy plik graficzny na stronie przeglądarka musi pobrać z serwera, zanim go pokaże - im większa waga obrazu JPEG, tym dłużej to trwa, zwłaszcza na wolnym łączu czy w telefonie. Dlatego zdjęcia optymalizuje się: dobiera rozsądną kompresję i wymiary, by witryna ładowała się szybciej i nie zniechęcała użytkownika. Stąd rozmiar grafiki JPEG wpływa na czas ładowania strony.

Pytanie 27

Przedstawiona funkcja napisana w kodzie JavaScript ma na celu:

function oblicz(a, n)
{
    wynik = 1;
    for(i = 0; i < n; i++)
        wynik *= a;
    return (wynik);
}
A. wpisać wyniki mnożenia a przez n
B. zwrócić iloczyn kolejnych liczb od 1 do a
C. wpisać kolejne liczby od a do n
D. zwrócić wynik potęgowania a^n
Przedstawiona funkcja nie zwraca iloczynu kolejnych liczb od 1 do a, ponieważ taka operacja wymaga iteracyjnego mnożenia zmiennych w rosnącym ciągu, co oznaczałoby konieczność użycia dwóch zmiennych jako zakresu pętli czy też dodawania kolejnych wartości, a nie prostego mnożenia przez stałą wartość. Odpowiedź mówiąca o wpisywaniu kolejnych liczb od a do n również nie jest poprawna, ponieważ funkcja nie wykorzystuje tablic ani nie przepisuje wartości w ten sposób do żadnej struktury danych. Kod nie zawiera mechanizmu iteracyjnego przydzielania wartości do zmiennej przechowującej liczby. W końcu, funkcja nie wpisuje wyników mnożenia a przez n bezpośrednio, ale realizuje operację arytmetyczną potęgowania poprzez mnożenie wyniku przez a n-krotnie. Takie podejście nie jest równoznaczne ze zwracaniem prostego iloczynu a * n, co oznaczałoby pojedyncze mnożenie dwóch liczb, a nie iteracyjne potęgowanie. Zrozumienie tego odróżnienia jest kluczowe w kontekście poprawnego interpretowania operacji matematycznych w programowaniu, zwłaszcza w kontekście implementacji algorytmów matematycznych i rozwiązywania problemów wymagających dokładnego modelowania operacji arytmetycznych. Pomyłki takie mogą prowadzić do błędnych wyników lub niewłaściwego stosowania kodu w praktycznych zastosowaniach informatycznych.

Pytanie 28

CMYK to zestaw czterech podstawowych kolorów stosowanych w druku:

A. czerwonego, purpurowego, żółtego, szarego
B. turkusowego, purpurowego, białego, czarnego
C. turkusowego, błękitnego, białego, różowego
D. turkusowego, purpurowego, żółtego, czarnego
CMYK to model barw używany w druku, oparty na czterech farbach: C - cyan (turkusowy), M - magenta (purpurowy), Y - yellow (żółty) i K - key/black (czarny). Kolory powstają przez nakładanie farb na biały papier (synteza substraktywna), a czarny dodaje głębi i oszczędza pozostałe farby. Dlatego CMYK to turkusowy, purpurowy, żółty i czarny.

Pytanie 29

char str1[30] = 'Ala ma kota';
printf("%s", str1);
Wskaż, gdzie tkwi błąd w powyższym kodzie napisanym w języku C++?
A. Do funkcji printf przekazano za mało argumentów.
B. Tekst powinien być zawarty w cudzysłowie.
C. W funkcji printf nie można używać formatowania %s.
D. Tekst powinien mieć dokładnie 30 znaków.
Podane odpowiedzi zawierają kilka powszechnych nieporozumień dotyczących języka C/C++. Użycie 30 znaków do definiowania napisu nie jest kluczowe, ponieważ długość napisu może być zmienna, a w przypadku napisu \"Ala ma kota\" jego długość wynosi 13 znaków, co jest znacznie mniej niż 30. Definiowanie napisu w taki sposób nie stwarza problemu, o ile tablica jest wystarczająco duża, aby pomieścić cały napis wraz z terminatorem '\0'. Koncepcja przekazywania argumentów do funkcji printf również jest źle zrozumiana, ponieważ funkcja ta przyjmuje jako argument wskaźnik do napisu, a nie liczbę argumentów. Wspomnienie o formacie %s w funkcji printf jest mylące, ponieważ format procentowy %s jest poprawny i stosowany w celu wyświetlenia łańcucha tekstowego. To są standardowe praktyki w C/C++, a ich nieznajomość może prowadzić do błędnych wniosków. Istotne jest rozumienie, że każdy z tych błędów wynika z niepełnego zrozumienia zasad działania języka, co może prowadzić do trudności w pisaniu poprawnego kodu. Właściwa interpretacja tych zasad jest niezbędna do skutecznego programowania.

Pytanie 30

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

div { border: solid 2px blue;
       margin: 20px;}
A. 20 px oraz marginesy zewnętrzne tego obramowania
B. 20 px oraz marginesy wewnętrzne tego obramowania
C. 2 px oraz marginesy wewnętrzne tego obramowania
D. 2 px oraz marginesy zewnętrzne tego obramowania
W definicji stylu CSS podano, że sekcja div będzie miała obramowanie o szerokości 2 pikseli oraz marginesy zewnętrzne o wartości 20 pikseli. Obramowanie jest definiowane przez właściwość 'border', gdzie 'solid' oznacza typ obramowania i '2px' to jego szerokość, a 'blue' to kolor. Marginesy zewnętrzne są definiowane za pomocą właściwości 'margin', która w tym przypadku ma wartość 20 pikseli. Jest to odległość między brzegiem obiektu a innymi elementami na stronie. Zrozumienie tych właściwości jest kluczowe w projektowaniu responsywnych i dobrze zorganizowanych układów stron internetowych. Stosując te właściwości, twórcy stron mogą łatwo kontrolować wygląd i odległości między elementami, co jest szczególnie ważne w kontekście użyteczności i estetyki witryny. Przykładowo, jeśli chciałbyś dodać więcej przestrzeni pomiędzy sekcjami, wystarczy zwiększyć wartość 'margin'. Warto również zaznaczyć, że te właściwości są zgodne z aktualnymi standardami CSS, co pozwala na ich wszechstronne wykorzystanie w praktyce.

Pytanie 31

W systemie MySQL należy użyć polecenia REVOKE, aby odebrać użytkownikowi anna możliwość wprowadzania zmian tylko w definicji struktury bazy danych. Odpowiednie polecenie do zrealizowania tej operacji ma formę

A. REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'
B. REVOKE ALL ON tabela1 FROM 'anna'@'localhost'
C. REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'
D. REVOKE CREATE ALTER DROP ON tabela1 FROM 'anna'@'localhost'
Wszystkie inne odpowiedzi są nieprawidłowe z kilku powodów. W pierwszej z nich, 'REVOKE ALL ON tabela1 FROM 'anna'@'localhost'', przyznawane są wszystkie uprawnienia, co jest sprzeczne z intencją odebrania tylko określonych praw. Użytkownicy powinni być ograniczani jedynie w tych obszarach, gdzie to konieczne. Z kolei odpowiedź 'REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'' zawiera 'UPDATE', co jest związane z danymi, a nie strukturą bazy, co również czyni ją niewłaściwą. Odmowa praw do aktualizacji danych nie jest odpowiednia w kontekście modyfikacji struktury bazy. Z kolei opcja 'REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'' ponownie nie odnosi się do struktury bazy, ponieważ odnosi się do manipulacji danymi, nie do struktury. Kluczowym błędem w tym kontekście jest mylenie uprawnień związanych z danymi z uprawnieniami związanymi ze strukturą bazy danych. W zarządzaniu uprawnieniami w MySQL istotne jest zrozumienie różnicy pomiędzy tymi kategoriami, aby skutecznie zabezpieczyć bazę danych. W praktyce dobrym podejściem jest wdrożenie zasady minimalnych uprawnień, co zmniejsza ryzyko nieautoryzowanych zmian w strukturze i danych bazy.

Pytanie 32

Który z poniższych formatów NIE umożliwia zapis plików animowanych?

A. ACE
B. GIF
C. SVG
D. SWF
Format ACE (Archive Compressed Enhanced) jest formatem archiwum, który służy do kompresji danych, a nie do przechowywania animacji. W przeciwieństwie do formatów takich jak SWF, SVG czy GIF, ACE nie jest projektowany do obsługi grafiki ruchomej. SWF to format opracowany przez Adobe, który jest używany do tworzenia i wyświetlania animacji we Flashu. SVG to wektorowy format grafiki, który również wspiera animacje za pomocą CSS i JavaScript. GIF, z kolei, jest jednym z najpopularniejszych formatów do zapisu prostych animacji, dzięki możliwości przechowywania wielu klatek w jednym pliku. Zrozumienie różnic między tymi formatami jest istotne w kontekście tworzenia treści multimedialnych, a także w kontekście ich zastosowań w sieci. Wybór odpowiedniego formatu do animacji może mieć wpływ na wydajność ładowania strony, jakość wizualną oraz możliwości interakcji z użytkownikami.

Pytanie 33

Jaką funkcję pełni funkcja CONCAT() w SQL?

A. łącznienie tekstu wyświetlanego
B. usuwanie określonego tekstu
C. przycinanie tekstu wyświetlanego
D. wyodrębnianie podłańcucha znaków z tekstu wejściowego
Funkcja CONCAT() w SQL to naprawdę super opcja, bo pozwala na łączenie różnych ciągów tekstowych. To jest mega przydatne, zwłaszcza przy pracy z bazami danych, kiedy potrzebujemy stworzyć np. pełne imię i nazwisko z osobnych pól. Jak mamy tabelę z imionami i nazwiskami, to możemy użyć CONCAT(), żeby to wszystko połączyć w jedną całość: CONCAT(imie, ' ', nazwisko). Takie operacje są dość popularne w raportach i przy tworzeniu dynamicznych zapytań, gdzie często łączymy różne dane. Fajnie też pamiętać, żeby uważać na wartości NULL, bo mogą nam namieszać w wynikach. Poza tym, w różnych systemach bazodanowych są też inne metody łączenia tekstów, jak operator || w PostgreSQL, co może być przydatne, jeśli przenosisz zapytania między systemami.

Pytanie 34

Przy użyciu komendy ALTER TABLE można

A. skasować tabelę
B. zmodyfikować strukturę tabeli
C. usunąć dane z rekordu
D. zmienić dane w rekordach
Kiedy mówimy o poleceniu ALTER TABLE w SQL, to jest to naprawdę ważne narzędzie, które pozwala na zmianę struktury tabeli w bazie danych. Możemy dzięki niemu dodać nowe kolumny, zmienić rodzaj danych w istniejących czy nawet usunąć niepotrzebne kolumny. Na przykład, gdybyśmy chcieli dodać kolumnę 'data_urodzenia' do tabeli 'pracownicy', to musielibyśmy użyć takiego polecenia: ALTER TABLE pracownicy ADD data_urodzenia DATE;. To wszystko jest kluczowe, żeby nasze aplikacje mogły się rozwijać i żeby baza danych spełniała coraz to nowe wymagania. Z mojego doświadczenia wynika, że najlepiej jest zawsze robić kopię zapasową danych przed wprowadzeniem jakichkolwiek zmian. Dobrze by też było testować zmiany w środowisku, które nie jest produkcyjne, zanim coś popsujemy. Warto pamiętać, że niektóre operacje mogą wymagać zablokowania tabeli, co może skutkować tym, że użytkownicy nie będą mogli korzystać z systemu, więc trzeba to mieć na uwadze.

Pytanie 35

W HTML-u znacznik tekst będzie prezentowany przez przeglądarkę w sposób identyczny do znacznika

A. <b>tekst</b>
B. <big>tekst</big>
C. <sub>tekst</sub>
D. <h1>tekst</h1>
Znacznik <strong> w HTML jest używany do oznaczania tekstu, który ma być wyróżniony jako ważny. Jego domyślne stylizowanie w przeglądarkach polega na pogrubieniu tekstu, co jest również funkcją znacznika <b>. Oba znaczniki mają podobne zastosowanie, ale <strong> niesie dodatkowe znaczenie semantyczne, co oznacza, że informuje przeglądarki i maszyny o tym, że dany tekst jest istotny. Przykładem może być użycie <strong> w nagłówkach lub w miejscach, gdzie chcemy zwrócić uwagę na kluczowe informacje, jak np. 'Zamówienie <strong>pilne</strong> musi być dostarczone do jutra.' W kontekście dobrych praktyk zaleca się używanie znaku <strong> zamiast <b>, gdyż wspiera to dostępność i SEO - wyszukiwarki lepiej interpretują semantykę treści, co może wpłynąć na pozycjonowanie strony. Warto również pamiętać, że zgodnie z W3C, semantyka HTML ma kluczowe znaczenie dla strukturyzacji dokumentów oraz ich dostępności.

Pytanie 36

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

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

Pytanie 37

Jakie mechanizmy przydzielania zabezpieczeń, umożliwiające wykonywanie działań na bazie danych, są związane z tematyką zarządzania kontami, użytkownikami oraz ich uprawnieniami?

A. Z zasadami
B. Z przywilejami obiektowymi
C. Z przywilejami systemowymi
D. Z właściwościami
Zarządzanie kontami, użytkownikami i uprawnieniami w kontekście baz danych opiera się na przywilejach systemowych, które umożliwiają kontrolowanie dostępu do zasobów i operacji w systemie bazodanowym. Przywileje systemowe są definiowane jako zestaw uprawnień przypisanych do użytkowników lub ról, które decydują o tym, jakie operacje mogą być wykonywane na poziomie systemu, takie jak tworzenie, modyfikowanie i usuwanie baz danych oraz zarządzanie danymi. Przykłady przywilejów systemowych obejmują 'CREATE USER', 'DROP USER' czy 'GRANT ALL PRIVILEGES', które pozwalają na pełne zarządzanie użytkownikami oraz ich uprawnieniami. Standardy takie jak SQL92 czy ISO/IEC 9075 określają zasady dotyczące definiowania i stosowania przywilejów w systemach zarządzania bazami danych, co sprawia, że są one kluczowe dla zapewnienia bezpieczeństwa oraz integralności danych. Właściwe zarządzanie tymi przywilejami jest niezbędne do minimalizacji ryzyka nieautoryzowanego dostępu oraz do ochrony wrażliwych informacji przed potencjalnymi zagrożeniami.

Pytanie 38

W przedstawionym diagramie bazy danych biblioteka, elementy: czytelnik, wypozyczenie i ksiazka są

Ilustracja do pytania
A. polami.
B. atrybutami.
C. encjami.
D. krotkami.
W diagramie bazy danych pokazanym w pytaniu elementy „czytelnik”, „wypozyczenie” i „ksiazka” to klasyczne przykłady encji. Encja w modelu relacyjnym (a dokładniej w modelu ER – Entity-Relationship) oznacza pewien typ obiektu ze świata rzeczywistego, o którym chcemy przechowywać dane w bazie. W praktyce encja odpowiada tabeli w relacyjnej bazie danych: encja CZYTELNIK → tabela czytelnik, encja KSIĄŻKA → tabela ksiazka, encja WYPOŻYCZENIE → tabela wypozyczenie. Każda z tych encji ma swój klucz główny (np. czytelnik_id, ksiazka_id, wypozyczenie_id), czyli atrybut jednoznacznie identyfikujący rekord. To jest dokładnie to, co w dobrych praktykach projektowania baz danych (np. wg standardowych metodologii ERD używanych w SQL Server, MySQL Workbench czy Oracle Data Modeler) uważa się za podstawę poprawnego modelu danych.

Moim zdaniem bardzo ważne jest rozróżnienie poziomów: encja to „typ obiektu” (tabela), atrybut to „cecha obiektu” (kolumna), a krotka/rekord to „konkretne wystąpienie obiektu” (pojedynczy wiersz). Na przykład: encja CZYTELNIK opisuje wszystkich możliwych czytelników biblioteki, atrybuty tej encji to imie, nazwisko, ulica itd., a jedna konkretna krotka w tabeli czytelnik opisuje jedną osobę, np. Jana Kowalskiego z ulicy Lipowej 5. W projektowaniu systemów bibliotecznych, systemów sprzedażowych, magazynowych czy w aplikacjach webowych z bazą danych zawsze zaczyna się właśnie od zidentyfikowania encji: klient, zamówienie, produkt, faktura itd. Dopiero potem dopisuje się atrybuty, ustala relacje (tak jak tu: czytelnik – wypożyczenie – książka) i definiuje klucze obce. To podejście jest zgodne z normalizacją i ogólnymi zasadami projektowania relacyjnych baz danych – pomaga uniknąć nadmiarowości danych i błędów logicznych w aplikacji.

Pytanie 39

<?php
setcookie('egzamin', '24', time() + 60);
?>
Na podstawie przedstawionego kodu PHP wskaż, ile wynosi czas ważności ustawionego ciasteczka?
A. 1 minuta.
B. 24 godziny.
C. 1 godzina.
D. 24 doby.
Ten fragment kodu PHP jest dobrym przykładem, jak łatwo pomylić się przy interpretowaniu czasu życia ciasteczka. Wiele osób widząc wartość '24' w nazwie albo w wartości ciasteczka automatycznie kojarzy to z 24 godzinami czy 24 dobami. Tymczasem w ogóle nie ma to znaczenia dla czasu ważności. O tym, jak długo cookie będzie żyło, decyduje wyłącznie trzeci parametr funkcji setcookie(), czyli tutaj: time() + 60. Funkcja time() zwraca aktualny czas w sekundach, a liczba 60 to po prostu 60 sekund. Nie ma tu żadnej „magii” powiązanej z liczbą 24.
Częsty błąd polega na tym, że ktoś myśli kategoriami: godziny, dni, a nie sekund. W PHP czas wygaśnięcia w setcookie musi być podany jako konkretny znacznik czasowy UNIX, więc programista musi sam przeliczyć sobie minuty czy godziny na sekundy. Jeśli ktoś pomyśli, że 60 to np. 60 minut, to w praktyce pomyli się dokładnie 60 razy. Podobnie założenie, że skoro wartość ciasteczka to '24', to ciasteczko będzie ważne 24 godziny lub 24 doby, wynika z mieszania znaczenia logicznego danych z mechanizmem technicznym ich przechowywania. Wartość '24' to po prostu tekst przechowywany w cookie, bez żadnego automatycznego powiązania z czasem.
Z mojego doświadczenia takie pomyłki biorą się też z porównywania do innych technologii, gdzie czas ustawia się np. w minutach. W PHP (i generalnie w mechanizmie UNIX time) wszystko liczymy w sekundach. Dlatego dobre praktyki mówią, żeby zawsze jawnie pisać wyrażenia typu 60 * 60 (godzina), 60 * 60 * 24 (doba), zamiast samego „3600” czy „86400”, bo to od razu sugeruje, o jaką jednostkę chodzi i ogranicza ryzyko złej interpretacji. Jeżeli programista nie rozumie tej konwencji, będzie projektował mechanizmy sesji, logowania czy koszyków zakupów z błędnymi czasami życia ciasteczek, co może prowadzić do irytujących sytuacji dla użytkownika, a nawet do problemów z bezpieczeństwem (np. zbyt długie przechowywanie wrażliwych informacji). Dlatego tak ważne jest, żeby przy każdym użyciu setcookie() świadomie przeliczać czas na sekundy i nie sugerować się nazwą ani wartością samego ciasteczka.

Pytanie 40

Jakiego typu mechanizm zabezpieczeń aplikacji jest zawarty w środowisku uruchomieniowym platformy .NET Framework?

A. Mechanizm uruchamiania aplikacji oparty na uprawnieniach kodu (CAS - Code Access Security) i na rolach (RBS - Role-Based Security)
B. Mechanizm uruchamiania aplikacji zrealizowany przez frameworki aplikacji webowych (ASP.NET)
C. Mechanizm uruchamiania aplikacji realizowany przez funkcję Windows API (Application Programming Interface)
D. Mechanizm uruchamiania aplikacji dla bibliotek klas
Odpowiedzi sugerujące, że mechanizmy bezpieczeństwa w .NET Framework są realizowane przez bibliotekę klas, frameworki aplikacji internetowych (ASP.NET) oraz przez funkcje Windows API, są niepoprawne. Mechanizm wykonywania aplikacji dla bibliotek klas nie jest samodzielnym systemem kontroli bezpieczeństwa; oferują one zestaw funkcji i klas, które mogą być używane do rozwoju, ale nie zawierają w sobie wbudowanych zabezpieczeń. Również frameworki aplikacji internetowych, takie jak ASP.NET, wykorzystują różne techniki i standardy do zapewnienia bezpieczeństwa, ale same w sobie nie stanowią całościowego mechanizmu kontroli dostępu. Funkcje Windows API (Application Programming Interface) dostarczają niskopoziomowe interfejsy do interakcji z systemem operacyjnym, jednak ich rola w kontekście bezpieczeństwa aplikacji .NET jest ograniczona i nie odpowiada za zarządzanie uprawnieniami kodu. W rzeczywistości CAS i RBS są odpowiedzialne za zarządzanie dostępem do zasobów w .NET Framework, co czyni te mechanizmy kluczowymi dla zapewnienia bezpieczeństwa, podczas gdy pozostałe wymienione mechanizmy są bardziej złożonymi elementami większej architektury aplikacji i same w sobie nie oferują pełnej funkcjonalności ochrony przed nieautoryzowanym dostępem.