Oczywiście backend strony LekcjePHP.pl został napisany w języku PHP z uwzględnieniem wersji 7.4. A za frontend odpowiada biblioteka Bootstrap 5.0-beta plus odrobinę własnych styli CSS.
Najlepsze zestawienie Manuali, Validatorów, Forów, Blogów i Vlogów, optymalizatorów i konwerterów grafiki, Sandboxów programistycznych, generatorów RegEx, minimalizatorów i upiększaczy CSS znajdziesz pod adresem Przydatne linki i narzędzia.
Jest wiele wyspecjalizowanych technologii czy frameworków, które będziesz musiał poznać zależnie od aktualnej pracy. Ale wydaje się że zupełnym minimum jest poznanie HTML5, CSS3, JS i baz danych SQL (najczęściej MySQL).
Dla programisty webowego HTML, CSS są jak pędzel dla malarza. Nie musisz być w tych technologiach perfekcjonistą (do tej roli predestynowani są programiści front-endowi) ale podstawy z pewnością musisz znać.
Także znajomość JavaScript będzie dla ciebie bardzo pomocna, choćby przy walidacji formularzy po stronie klienta (przeglądarki) itp.
Najpierw przeczytaj powyższy punkt "Jakie inne technologie muszę poznać..." jako programista webowy musisz zacząć od HTMLa i CSSa, warto także poznać podstawy JS i relacyjne bazy danych SQL (np. MySql).
Ważnym elementem jest rozumienie protokołu HTTP plików Cookies i działania przeglądarki internetowej.
Warto spróbować też uruchomić skrypty PHP z poziomu linii poleceń CLI (Command Line Interface).
Ważnym elementem będzie nauka narzędzi pomocniczych, jak system kontroli wersji GIT, konfiguracji serwera WWW Apache.
Być może to właśnie jest ten moment aby liznąć zbiór reguł PSR, dzięki temu nasz kod zacznie wyglądać przyzwoicie i nie będziesz łamał podstawowych zasad i dobrych praktyk. Będzie to niezwykle pomocne, szczególnie jak zaczniesz pracować w zespole z innymi programistami PHP.
Dalej to, czym głąbiej w las tym więcej drzew. Pewnie przyjdzie moment aby zapoznać się z Composerem i Packagist, poznać podstawowe Wzorce projektowe (np. Strategia).
Kolejna ścieżka rozwoju bardziej zależy od wykonywanej przez Ciebie pracy. Jeżeli używasz jakiego frameworka to na pewno będziesz musiał się z nim zapoznać. Jeżeli twoim zadaniem będzie tworzenie skomplikowanych raportów, będziesz musiał poznać sekrety języka SQL, jeżeli twoim zadaniem będzie optymalizacja szybkości aplikacji koniecznym stanie się poznanie systemów buforowania (ang. caching) takich jak Redis, Memcached czy też systemów wyszukiwania takich jak Elasticsearch czy MongoDB (NoSql document store).
Aby pisać lepszy i bardziej bezbłędny kod wypadało by, zapoznać się z testami, szczególnie TDD. Inne skomplikowane zadania to optymalizacja kodu, Caching danych i kodu.
Aby unikać zagrożeń w sieci i pisać bezpieczne aplikacje będziesz musiał zapoznać się z zagrożeniami bezpieczeństwa aplikacji internetowych i listą OWASP (zobacz niżej).
Całkiem dobrą ścieżkę rozwoju opisuje strona: phptherightway.com
W przypadku języków interpretowanych (takich jak właśnie PHP czy JS) wybór edytora nie ma większego znaczenia.
Na początku nauki nie powinieneś się na tym skupiać, choć używanie windowsowego Notatnika pewnie nie jest najlepszym pomysłem!
Wielu programistów PHP korzysta z dwóch programów. Jednego szybkiego edytora do błyskawicznej modyfikacji kodu, najlepiej napisanego natywnie dla systemu w jakim pracujesz (dla Windowsa jest to np. Notepad++, EditPlus). I z drugiego zaawansowanego IDE, który może być bardzo przydatny w przypadku tworzenia skomplikowanych projektów. W tym obszarze obecnie królują PHPStorm i VSCode.
Dużą popularnością ciągle cieszą się też edytory: Brackets, Sublime Text, Atom, Netbeans, Eclipse, PSPad.
Nie, ale możesz stworzyć strony PWA czyli "Progressive Web Apps", które zachowują się prawie identycznie jak aplikacje i mogą być nawet dodane do sklepu "Google Play".
PWA to strony internetowe zbudowane przy użyciu technologii takich jak HTML, CSS i JavaScript. Zostały one zaprojektowane z myślą o urządzeniach mobilnych, co oznacza, że treść strony wygodnie mieści się na małych ekranach smartfonów, a formularze są proste i łatwe w użyciu. Jednak w przeciwieństwie do responsywnych stron internetowych wszystkie adresy URL w PWA ładują się nawet wtedy, gdy urządzenie jest offline. Oznacza to, że klienci zawsze mogą korzystać z ostatniej wersji strony przechowywanej w pamięci podręcznej.
Dobieraj zawsze język do zadania. Każdy język ma swoją specyfikę i najlepiej sprawdza się przy danych zadaniach.
Przykładowo język PHP został stworzony do dynamicznego generowania stron WWW po stronie back-endu i w tym zadaniu jest jednym z najlepszych jeżeli nie najlepszym. Natomiast do tworzenia gier najprawdopodobniej najlepszy będzie język C++. Natomiast jeżeli myślisz o aplikacjach na platformie Apple to z pewnością będziesz musiał skorzystać z języka Swift.
Wydaje się że w pierwszej kolejności powinieneś się zastanowić z jakiego typu gry chcesz tworzyć. Jeżeli myślisz o dużych grach tworzonych przez duże zespoły programistów, to powinieneś wiedzieć że prawdopodobnie używaja one jednego z silników do gier. Do najpopularniejszych silników do gier należą Unreal Engine i Unreal Engine. W przypadku tego pierwszego będziesz potrzebował znajomości języka C# a w przypadku drugiego języka C++.
Prawdopodobnie bardziej uniwersalnym językiem bedzie C++ jeżeli myślisz o tworzeniu gier komputerowych.
Silnik gry to zestaw narzędzi który pozwala game developerom tworzyć gry wideo, na jego składowe wchodzą wszystkie rzeczy które potem możecie doświadczyć w grze czyli grafika, dźwięki ale też sztuczna inteligencja (AI) czy fizyka, wykrywanie kolizji interakcji pomiędzy obiektami.
W odróżnieniu od robienia gry na podstawie silnika, w początkach GameDevu tworzyło się gry od samych podstaw. Istnieją silniki stworzone przez filmy developerskie dla samych siebie i tak na przykład CD PROJEKT mają swój silnik RED Engine w którym powstał np. Wiedźmin III czy Cyberpunk 2077 a Rockstar ma swój silnik RAGE na którym powstał np. GTA V.
Odpowiedź brzmi to zależy. Zależy od branży i zadań nad którymi będziesz pracował. Tworzenie programów to sztuka rozwiązywania problemów. Jeśli planujesz tworzyć gry, narzędzia inżynierskie itp. to znajomość matematyki będzie z pewnością konieczna.
Natomiast jeśli będziesz tworzył aplikacje użytkowe czy tzw. CRUDy, to znajomość matematyki będzie Ci potrzebna na poziomie podstawowym.
Najważniejsza będzie zdolność do logicznego myślenia, bo bez tego będzie Ci trudno rozwiązywać problemy twojej firmy. Warto dodać, że niektóre firmy wymagają podczas rekrutacji napisania zadania programistycznego, polegającego na napisaniu jakiegoś algorytmu, gdzie będziemy musieli rozumieć ideę ciągów, drzew czy algorytmów sortowania. Wtedy znajomość matematyki na nieco wyższym poziome będzie wymagana.
Do najpopularniejszych silników gier komputerowych (ang. game engine) stanowiących główną część kodu gry komputerowej należą:
Tester odpowiada za weryfikację prawidłowego działania oprogramowania a także za przeprowadzenie testów funkcjonalności. Jego praca polega na wykrywaniu błędów i usterek a następnie zgłaszanie ich developerom.
Testerzy dzielą się na manualnych i automatycznych (automatyzujących). Testerzy manualni osobiście przechodzą przez różne opcje programu. Testy automatyczne są wykonywane przez wcześniej napisany skrypt, który realizuje założenia testu. Testy tego typu mogą różnić się znacznie złożonością. Mogą to być testy weryfikacji pojedynczej metody w danej klasie (testy TDD), jaki i testy złożonych czynności w interfejsie aplikacji. Tester automatyczny to właściwie programista, który pisze skrypty testowe.
TDD czyli "Test-Driven Development" jest techniką tworzenia oprogramowania, w której główną ideą jest od razu w pierwszej kolejności pisanie testów do nieistniejących jeszcze funkcji czy metod, a dopiero potem pisanie ich implementacji.
PSR czyli "PHP Standard Recommendation" jest zbiorem zaleceń czy reguł służących do standaryzacji kodowania w języku PHP. Głównym celem jest umożliwienie współdziałania komponentów i zapewnienie wspólnej podstawy technicznej przy wdrażaniu sprawdzonych koncepcji optymalnego programowania. PSR opisuje takie niuanse jak formatowanie kodu czy nazewnictwo klas, zmiennych i metod to złożone mechanizmy auto ładowania klas czy interfejsy buforowania.
Listę wszystkich standardów znajdziesz na stronie php-fig.org/psr
WordPress to Open Sourcowy system zarządzania treścią (CMS), bazującym na języku PHP i bazie danych MySQL. Pierwotnie powstał jako platforma blogowa, lecz dzięki wielkiej ilości pluginów (wtyczek rozszerzających) i dużej popularności, stał się niezwykle popularną platformą do kreacji zwykłych stron, landing pages, stron firmowych, czy nawet sklepów internetowych.
Główną jego zaletą jest mnogość gotowych motywów (Themes), pluginów jaki i prostota budowy.
Natomiast do głównych wad zalicza się archaiczną strukturę projektu i nienowoczesny kod.
WordPress jest wykorzystywany przez około 1/3 z wszystkich najpopularniejszych stron WWW, co ustanawia go najpopularniejszym systemem zarządzania treścią CMS.
SQL Injection to jedna z podatności występujących w aplikacjach polegająca na podaniu (wstrzyknięciu), najczęściej przez formularz złośliwego kodu, który dołączony do zapytania SQL, spowoduje zwrócenie poufnych informacji z bazy danych, lub zaowocuje złamaniem innych zabezpieczeń, jak np. zalogowanie na konto administratora.
Na ten atak narażone są aplikacje przyjmujące dane od użytkownika, które bezpośrednio bez żadnego lub niewłaściwego filtrowania zostają dołączone do zapytań SQL.
Podstawowymi metodami zapobiegania SQL Injection jest filtrowanie i/lub sanityzacja danych wejściowych, eskejpowanie danych dołączanych do zapytania SQL lub też bindowanie parametrów.
OWASP to fundacja działająca non-profit, mająca na celu zwiększenie poziomu bezpieczeństwa aplikacji internetowych. Fundacja ta regularnie wydaje dokument OWASP Top 10, który zawiera, zestawienie 10 najpopularniejszych podatności występujących w aplikacjach internetowych.
Więcej informacji znajdziesz na stronie: owasp.org/www-project-top-ten
Wersja 7 wniosła bardzo wiele zmian. Zaczynając od zwiększenia wydajności poprzez usunięcie wszystkich przestarzałych funkcji oznaczonych jako Deprecate, po wprowadzenie wielu zmian składniowych.
Do najważniejszych zmian należą:
Więcej zmian jakie wniosły kolejne wersje języka od 7.1 poprzez 7.4 aż do PHP 8.0 znajdziesz w innych odpowiedziach!
Node.js to wieloplatformowe środowisko uruchomieniowe typu server-side do tworzenia aplikacji napisanych w języku JavaScript. Jest to środowisko o otwartym kodzie stworzone przez Ryana Dahla w 2009 roku Zamysłem do jego utworzenia jest filozofia "JavaScript everywhere", umożliwiająca programistom tworzenie całościowej aplikacji za pomocą jednego języka JavaScripy.
Node składa się z silnika JS V8 implementującego specyfikację ECMAScript, stworzonego i rozwijanego przez Google, tego samego co jest używany w przeglądarce Google Chrome, a dziś także w Microsoft Edge.
Redis jest bazą danych NoSql typu klucz – wartość, która przechowuje dane w pamięci RAM dzieki czemu jest ekstremalnie wydajna. Niedogodnością jednak jest ulotność danych, co w wielu przypadkach jest niedopuszczalne. Możliwa jest konfiguracja bazy w której będzie ona co pewien czas zrzucała dane do pliku.
Redis zapewnia czas odpowiedzi liczony w mikrosekundach i umożliwia nawet do kilku milionów żądań na sekundę.
Do najważniejszych zastosowań należy: Buforowanie (ang. caching); Obsługa kolejek; Przechowywanie sesji użytkowników jako alternatywa standardowego przechowywania sesji w plikach; Time To Live Cache czyli cache z możliwością ustawienia czasu życia danego klucza.
RediSearch to silnik wyszukiwania pełnotekstowego i agregacji zbudowany jako moduł na bazie Redis. Umożliwia wykonywanie złożonych zapytań wyszukiwania w zbiorze danych Redis w wyjątkowo szybki sposób.
Unikalna architektura RediSearch, została napisana w języku C i zbudowana na zoptymalizowanych strukturach danych, co czyni ją prawdziwą alternatywą dla innych przodujących wyszukiwarek na rynku takich jak np. Elasticsearch.
Elasticsearch to rozproszony, RESTful nowoczesny silnik wyszukiwania i analizy oparty na Apache Lucene. Elasticsearch przechowuje dane w indeksach i umożliwia wykonywanie i łączenie wielu typów wyszukiwań, takich jak ustrukturyzowane, niestrukturalne, geograficzne i metryczne.
Narzędzie to jest używane jest nie tylko przez programistów, ale także przez analityków danych i inżynierów DevOps.
RabbitMQ to oprogramowanie brokera komunikatów typu open source. Jest to system kolejkowania zadań, który może być bardzo pomocny przy wykonywaniu czasochłonnych zadań, takich jak np. tworzenie plików PDF, generowania złożonych raportów, rozsyłania newsletterów.
AutoComplete to mechanizmem autouzupełniania często używanym we nowoczesnych formularzach w celu dostarczenia użytkownikowi listy gotowych propozycji na podstawie początkowych znaków/słów jakie on wprowadził w polu tekstowym.
Użytkownik może następnie wybrać pozycję z listy, która zostanie wprowadzona w pole wejściowe (input).
Funkcja ta skraca użytkownikowi stosowny wybór i/lub zapobiega wpisaniu przez niego niewłaściwego/nieistniejącego słowa lub zestawu słów.
Najpopularniejszą biblioteką udostępniającą autouzupełnianie jest widget autocomplete() z pakietu jQueryUI (jQuery User Interface). Efektem jej działania jest pole wyboru łudząco podobne do kontrolki/menu rozwijanego <select>, ale filtrujące opcje wyświetlając tylko te, które pasują do tego wzorca jaki wpisuje użytkownik.
Bibliotekę Autocomplete Jquery UI znajdziesz pod adresem: jqueryui.com/autocomplete
Memcached to darmowy, open source, wysokowydajny system buforowania (ang. cached) danych typu klucz-wartość przechowywanych w pamięci. Znajduje on zastosowanie do przyspieszenia aplikacji internetowych często poprzez zmniejszenie obciążenia bazy danych.
Memcached magazynuje wartości klucz-wartość w pamięci dla niewielkich porcji danych (stringów, obiektów) z wyników wywołań bazy danych, wywołań API, wyrenderownych stron czy obsługi sesji.
Prostota zastosowania jaki i prostota i szybkość wdrożenia, powoduje że implementacja Memcached dostępna jest dla większości popularnych języków w tym dla języka PHP jaki w dla wiekszości systemów operacyjnych.
Uwaga: w PHP mamy dwie podobne biblioteki to cachowania danych w pamięci:
Warto używać tej drugiej, ponieważ jest to nowsza biblioteka z lepszą funkcjonalnością.
MongoDB to jedna z najpopularniejszych typu open source (DBMS) baz NoSQL czyli system Document stores dostępny zarówno jako w pełni zarządzana usługa w chmurze, jak i do wdrożenia we własnej infrastrukturze zarządzanej samodzielnie.
Silnik został napisany w języku C++. Charakteryzuje się dużą skalowalnością, wydajnością oraz brakiem ściśle zdefiniowanej struktury obsługiwanych danych (schema).
Dane są serwowane jako dokumenty w typu JSON, natomiast baza przechowuje je w formacie BSON. Jest to nic innego jak JSON tyle, że w postaci binarnej.
Skalowanie MongoDB odbywa się w sposób poziomy. Oznacza to, że gdy zajdzie potrzeba zwiększenia wydajności obliczeniowej systemu, to nie dodajemy mocy obliczeniowej czy RAMu a dodajemy kolejną maszynę do klastra.
JVM czyli "Java Virtual Machine" - wirtualna maszyna Javy jest środowiskiem uruchomieniowym zdolnym do wykonywania kodu bajtowego Javy. Jest to system tłumaczący specyficzny język na instrukcje zrozumiałe dla komputera. Unikalność tego rozwiązania polega na tym, że aplikacja skompilowana na jedną platformę może bez problemu uruchamiać sie na innej platformie dzięki właśnie Java Virtual Machine. Różnice między platformami są wyrównywane przez system tłumaczący.
Wirtualna maszyna Javy została pierwotnie stworzona do wykonywania programów napisanych w języku Java. Z czasem pojawiły się kompilatory potrafiące kompilować wiele innych języków do postaci kodu bajtowego maszyny wirtualnej, czego najlepszym przykładem jest np. język Kotlin, który obecnie stał się oficjalnym językiem programowania dla platformy Android.
Lazy-Loading (leniwe ładowanie) to technika w której przy uruchamianiu strony WWW, przeglądarka nie pobiera z serwera od razu wszystkich obrazów (czy innych zasobów) ale robi to dopiero wtedy, kiedy użytkownik przewinie stronę gdzie dany obraz jest już widoczny.
Głównym celem jest zminimalizowanie czasu oczekiwania na treść strony, aby załadować tylko te grafiki/obrazy, które są potrzebne w tym konkretnym momencie. Jeśli użytkownik zacznie scrolować stronę w dół, to dynamicznie będą pobierane potrzebne grafiki.
Ważnym jest, że obrazy które są na górze strony powinny być widoczne od razu po załadowaniu i nie mogą być objęte tą techniką.
Bezsporny jest fakt, że PHP jest od wielu lat jednym z najpopularniejszych języków programowania. Jest on silnikiem na takich stronach internetowych jak: WordPress, Joomla, Prestashop, Wikipedia, Magento i wiele innych znanych gigantów.
Obecnie na rynku dostępnych jest kilka głównych frameworków PHP, używanych do dostarczania zarówno prostych, jak i bardzo złożonych rozwiązań i projektów:
CMS czyli Content Management System jest aplikacją Webowa (często w postaci Panelu Administracyjnego) służącą do samodzielnego i bezpłatnego tworzenia i zarządzania zawartością strony.
System CMS dedykowany jest dla personelu redakcyjnego często dla osób nietechnicznych.
Podstawowym zadaniem platform CMS jest oddzielenie treści (zawartości informacyjnej) od wyglądu strony. Po wprowadzeniu nowych treści przez redaktora, system zapisuje je najczęściej w bazie danych. Następnie silnik strony generuje dynamicznie strony na podstawie treści pochodzącej z bazy danych oraz odpowiednich szablonów. Daje to wygodniejsze i elastyczne zarządzanie treścią niż w przypadku statycznych plików HTML.
Systemy CMS są zwykle używane w e-commerce i blogowaniu, choć są przydatne we wszystkich typach witryn internetowych.
Najpopularniejszym systemem CMS, Open Sourcowy WordPress bazujący na języku PHP i bazie MySQL.
(Uwaga: systemy CMS to nie to samo, co kreatory witryn (Website Builders), takie jak Squarespace czy Wix).
Wszystkie najpopularniejsze systemy CMS, istniejące w współczesnym Internecie, napisano w języku PHP często przy współudziale bazy danych MySql.
Team leader zarządza pracą członków zespołu, by zapewnić odpowiednią jakość wykonywanych zadań. Organizuje pracę, wyznacza zadania oraz monitoruje ich prawidłowe wykonanie. Dba o dokumentację wykonywanej pracy i raportowanie wyników do kadry zarządzającej. Wspiera on także członków zespołu w rozwoju zawodowym.
Często łączy rolę managerską ze specjalistyczną widzą techniczną i wspólnie z członkami swojego zespołu wykonuje powierzone zadania biznesowe.
GIT to rozproszony, Open sourcowy system kontroli wersji. Został stworzony przez Linusa Torvaldsa jako narzędzie wspomagające rozwój jądra Linux.
Dzięki ogromnej elastyczności i prostocie użycia, Git stał się de facto standardem na rynku! Świetnie nadaje się on do prostych projektów jak i ogromnych przedsięwzięć, jakim jest właśnie jądro Linuxa.
(Uwaga: GIT to nie to samo co GitHub. Witryn takie jak: GitHub, GitLab czy BitBucket to zdalne, publiczne repozytoria wyposażone w Webowy system graficzny plus zestaw dodatkowych narzędzi wspomagających. Dzięki takim serwisom możemy także udostępniać swój kod innym programistom i współpracować z nimi zdalnie.)
Mailketing - jest to termin uknuty przez Macieja Aniserowicza (devstyle.pl, slowbiz.pl) na potrzeby kursu o marketingu o tej samej nazwie. Bazujący na wysyłce mailingu do grupy swoich subskrybentów z listy mailowej. Jak sie wydaje, idea kursu obraca się wokół e-mail marketingu, który ma Cię uniezależnić od socialmediowych gigantów.
Systemy e-commerce, czyli handlu elektronicznego, to rodzaj handlu będący zbiorem procesów, którego zwieńczeniem jest przeprowadzenie transakcji handlowej w sieci Internet. Do palety procesów należą: wybór / selekcja towarów lub usług, budowanie zamówienia tzw. koszyk, płatność (często także za pomocą transakcji elektronicznych) i ostateczna dostawa zamówionego towaru.
Transakcje mogą być dokonywane pomiędzy przedsiębiorstwami mówimy wtedy o transakcjach B2B lub pomiędzy firmami a osobami indywidualnymi co nazywamy transakcjami B2C.
Większość najpopularniejszych gotowych platform e-commerce powstało właśnie w języku PHP. Do najpopularniejszych należą:
Pseudoelementy to taki specyficzny rodzaj elementów, które nie są widoczne w waszym kodzie źródłowym HTML. Najpopularniejsze z nich to ::before i ::after i są one tworzone w CSS i nie możesz ich dodać w HTMLu! Pseudoelement dołączamy do innych znaczników / selektorów CSS (tagów, class, id) i deklarujemy je za pomocą dwóch dwukropków, co pozwala łatwo odróżnić je od pseudoklas takich jak: :hover, :active, :visited.
Właściwość content: "" może zawierać dowolną wartość tekstową, ale nie może zawierać tagów HTML. Kluczową rzeczą jest to, że pseudoelementy, aby pojawić sie na stronie, muszą zawierać jakąś treść (właściwość: content), choćby miała by być ona pusta content: "".
Element ::before będzie zawsze na początku a ::after zawsze na końcu ale wewnątrz przypisanego znacznika! Najciekawsze jest to że te elementy mają własne, osobne reguły stylowania w CSS i można je użyć na każdym elemencie posiadającym ciało (nie można ich użyć np. dla znacznika img).
Pseudoelementy nie są widoczne dla czytników ekranowych, z tego wynika że ich rolą jest bycie jedynie elementami dekoracyjnymi, tzn. nie powinny się w nich znajdować elementy istotne dla użytkownika strony WWW.
Elementy ::before i ::after domyślnie są blokami liniowymi, czyli traktowane podobnie jak tekst. Jeżeli będziesz potrzebować ustawić ich szerokości albo wysokość - musisz zmienić ich właściwość na display: block. Popularnym trickiem jest pozycjonowanie absolutne względem swojego rodzica, czyli wybranego selektora. W takim przypadku znacznik otrzymuje własność position: relative a pseudoelementy position: absolute. Dzięki temu możemy uzyskać różnorodne efekty ozdobników czy innego finezyjnego stylowania bez pisania dodatkowych tagów HTML!
Politykę prywatności znajdziesz w sekcji Dokumenty na stronie Polityka prywatności.