 Myślę, że możemy od razu przejść do tematu mojej prezentacji i dzisiaj chciałbym Wam opowiedzieć, jak w naszej firmie zwiększyliśmy efektywność naszego zespołu programistów, tak naprawdę w kilku krokach. Chcę poinformować, że tutaj nie będę się rozwodził na temat tego, jak zemplomotowaliśmy konkretne rozwiązania, bo tak naprawdę nie starczyłby nam na to prasu, ale po prostu zaprezentuję jakieś tipy i po prostu porady, które usprawniły naszym pracę. Kilka słuchów o naszej firmie, pewnie już kojarzycie właśnie WPSert, Tomek Lach wczoraj miał prezentację. Jesteśmy firmą, która zajmuje się wieloma rodzajami projektów od prostych stron do bardziej zaawansowanych aplikacji, przez co też po prostu udało, dzięki takim doświadczeniu udało nam się zbudować taki workflow, który chce właśnie na plan dzisiaj zaprezentować. Pracujemy głównie na WordPressie, jest to platforma, którą wykorzystujemy tak naprawdę do wszystkich projektów. Platforma, która tak naprawdę ma swoje bolączki, myślę, że każdy z nas, każdy z nas tak naprawdę o nich wie. Tak naprawdę sam WordPress jest, mogę po prostu powiedzieć, hejtowany ze strony programistów czystego PHP, symfony czy jakiś tam innych frameworków, ze względu na to, że oczywiście jest wolny, słabo zabezpieczony i tam tak naprawdę nic nie działa. Ale tak naprawdę możemy zadać sobie pytanie, czy to jest tak naprawdę wina WordPressa. Nasze doświadczenie mówi, że tak naprawdę wszystko zależy od dewelopera, od tego, jak my zaimplementujemy stronę, jak ona będzie po prostu działać. Dlatego w pewnym momencie zastanowiliśmy się, co możemy zrobić, żeby zmienić to nastawienie użytkowników do naszej platformy, do platformy, jaką jest WordPress. I tak naprawdę uznaleźliśmy, że odpowiedź jest naprawdę prosta, że musimy robić jak najlepsze strony internetowe, żeby wychodzić naprzeciw wszelkim oskarżeniu właśnie programistów, czy to dżoła skryptowych, czy PHP'owych odnośnie WordPressa. Postanowiliśmy robić po prostu jak najlepsze strony. To jest może proste stwierdzenie, ale myślę, że w pełni oddaję to, dlaczego postępnowiliśmy coś zmienić. I teraz rodzi się pytanie, tak naprawdę jak to zrobić? Prezentacja, którą tutaj, rzeczy, o których tutaj opowiem, tak naprawdę nie są rzeczami, które są idealne, bo każdy tak naprawdę się rozwija, zdobywamy doświadczenia, więc nie mogę powiedzieć, że za kilka lat to wszystko, co tutaj powiemy, będzie w 100% aktualne, czy to, co powiem, będzie w 100% zgodne z waszymi opiniami na przykład, ale to wszystko, co zaprezentuje po prostu się u nas sprawdza. Dużo doświadczenia dało nam praca, dało nam praca przesaportowanie stron. Oprócz tworzenia stron od zera, co jest łatwe, przyjemne i tak naprawdę każdy lubi, każdy lubi taką pracę. Ostatnio dostawaliśmy dużo zleceń po prostu, gdzie przykładowo klient porzucił, został porzucony przez developera. Myślę, że każdy z nas tutaj może się znaleźć w takiej sytuacji. I tak naprawdę zaglądamy w kod. Z frontów strona wygląda całkiem dobrze, ale tak naprawdę zaglądając w kod stwierdza, że naprawdę jest napisana masakrycznie. Jakakolwiek mała zmiana powoduje naprawdę duże ilości czasu, co wymagane do tego, aby zmienić cokolwiek. Niestety to jest problematyczne i tutaj nie dziwię się programistom, którzy uważają, że WordPress jest beznadziejny, bo strony działają dziwnie i nie da się nic zrobić, bo jeśli otrzymują takie strony, to nie ma tak naprawdę co się dziwić. Ale my wtedy zastanowiliśmy, co możemy po prostu zrobić, żeby jeszcze bardziej to ulepszyć i żeby zniwelować właśnie tego typu problemem. Tak, to jest gwiazda śmierci. Możemy się teraz zastanowić, co ona tak naprawdę tu robi. Z naszej strony odpowiedź jest prosta. Na przestrzeni ostatnich dwóch lat zajęliśmy się po prostu od momentu, w którym zdecydowaliśmy się coś zmienić. Zaczęliśmy budować coś pokroju własnego systemu, własnego workflow, który pomoże nam tworzyć dobre systemy, które pomoże nam tworzyć systemy, które będą łatwe w użytkowaniu i każde nowe użytkowni, które zarychnie, będzie wiedział, co ma zrobić i gdzie czegoś szukać. Stworzyliśmy taką właśnie swoją pracę śmierci, która dla początkowych programistów, którzy na przykład szodzą do naszej filmu, może się dodawać czymś skomplikowanym, ale tak naprawdę po chwilowej analizie, kodu, dokumentacji, czegokolwiek po prostu można stwierdzić, że jest część, co znacznie ułatwia naszą pracę. Stworzyliśmy tak po prostu zwany nasz WPSR Starter Bag. I teraz taka szybka historia. To jeśli chodzi o początek, to początek mojej karierii właśnie. Tak naprawdę każdy projekt był tworzony byle jak po to, żeby po prostu wyglądało. Dostaje makietę, robi HTML'a i fajnie. Myślę, że wielu z nas na początkowym etapie karierii tak tworzyło. Pliki były w ogóle nieustrukturyzowane. Big Functions, PHP w jednym pokroju 1000 linii, jak wszystko było w jednym miejscu. Mi się wydawało to fajne na początku, ale wiadomo z czasem to wszystko się zmienia i generuje coraz większe problemy. No i można powiedzieć, że sam workflow wyglądał właśnie w taki sposób. To wyglądało jako tako, działało jako tako, ale nie było po prostu ładne. Następny moment to było przejście poziom wyżej i podjęcie decyzji o automatyzacji pracy. Zaczęliśmy wykorzystywać NPM-a, Galpa, Sasa, czyli wszystko to, co ułatwia nam pracę po stronie front-endu. Dzięki temu nasz workflow wyglądał już właśnie w taki sposób i to już fajnie wyglądało na froncie. Może nie kilka lat, ale jakiś czas w taki sposób pracowaliśmy, ale znowu się zastanawialiśmy. Kurczę, ten front-end wygląda już fajnie, ale co możemy zrobić, żeby po prostu ten back-end jakoś ustrukturyzować? Przełomnym było wykorzystanie Bollard Playtower Prosevago Cadek, który pewnie kojarzycie chociaż troszkę. Usprawnił nam w dużym stopniu pracę po stronie back-endu, ułatwił nam rozdzielanie funkcjonalności na osobne pliki poprzez wykorzystanie name space'ów. Myślę, że kto znał się ten Bollard Playtower, to sobie w niego zerknąć, to wie, jak bardzo mógł być przydatny. Ale tak naprawdę stwierdziliśmy, że w sumie jednak trzeba znowu jakiś etap później i później do przodu się rozwinąć, bo jak to kiedyś usłyszałem na pewnej prezentacji, że jak stoimy w miejscu, to tak naprawdę się cofamy, no bo świat idzie do przodu. Myślę, że to jest dobra odzwierciedlenie tego, dlaczego stwierdziliśmy, że jeszcze zrobimy coś nowego. I jakiś czas temu powstał właśnie najnowsza wersja naszego workflow, naszego pakietu startowego, która naprawdę rozwiązywała już masę problemów, zainplenutowała bardzo dużo rozwiązań, które były już wykorzystywane w Sage'u, dodatkowo usprawnione. I w zasadzie właśnie chciałbym upowiedzieć o tej ostatniej wersji, jak ona nam pomogła w pracy. Aktualnie myślę, że mogę powiedzieć, że nasz workflow wyglądała się w taki sposób. Oczywiście to jest też nasza opinia. Nie możemy powiedzieć, że to jest jedyna słuszna droga, ale myślę, że ja zarówno ja, jak i moi koledzy właśnie z zespołu mogą się tutaj odnaleźć i zgodzić właśnie z tym obrazkiem. Ok. Pierwsza rzecz, którą stwierdziliśmy, że możemy coś z tym zrobić, to w jakiś sposób ujednaleźli środowisko. Nie możemy wymagać od developerów pracy w programach, które my rekombunujemy jeden do jeden, bo wiadomo, co developer to środowisko, ale stwierdziliśmy, że łatwiej będzie nam stworzyć list zalecanych aplikacji, które z doświadczenia wiemy, że są łatwo w użytkowaniu, pomagają tak naprawdę dzięki takiemu rozwiązaniu użytkownie, które nowa osoba, która jest prowadzona dopiero w zespół, może liczyć na pomoc po prostu innych osób. To są takie rzeczy, które nie... Halo, halo. Halo, halo. Słucham? Ok. To są rzeczy, które może dla Was się wydają dość dziwne, raczej może nie dziwne, ale każdy ma swoje upodobania, ale w naszym przypadku to się bardzo sprawdzało, szczególnie właśnie wieloletnia, takie jakby przebudowane infrastruktury do wykorzystania systemów Mac OS, naprawdę usprawnienia nam pracę, bo każdy może liczyć na każdego. Dodatkowo w dużym stopniu wykorzystujemy procedury ustalone wcześniej, tak żeby było nam łatwiej, żeby każda nowa osoba wiedziała, co ma robić i się trzymała tych procedur. No i jedne z nich to po prostu wykorzystywanie wirtualnych hostów, z adresami, z domenami, test. Konkretne schematy, tak jakby wymiany bazy danych pomiędzy użytkownikami pracującymi przy jednym projekcie. Na przykład wykorzystujemy lokalnego LCFA, jeśli na pewno korzystujecie tą wtyczkę, wykorzystujemy to, plus odpowiednie reguły właśnie wymiany bazy danych pomiędzy nami. No oczywiście obowiązkowo wykorzystujemy git, tu chyba nie muszę więcej mówić. Także same aplikacje naprawdę nam pomogły, chociaż w jakiś sposób usprawnić pracę i pomóc nowym osobom wdarzać się w projekt. Kolejny problem, który wystąpił, to był zapowodowany po prostu z zwykłą pomyłką ludzką podczas deployu po prostu zapomniano po prostu połączyć indeksowanie strony, połączyć indeksowanie strony połów w czasami developmentie. To spowodowało, że na przykład strona na przykład ważna była, tak naprawdę nie wziadana przez botygogla przez kilka godzin, co w przypadku dużego cywilizmu nie może być akceptowalne tak naprawdę. I stwierdziliśmy, że musimy wprowadzić pewne schematy, procesy, które tak naprawdę jeszcze bardziej zniwelują nam ten temat. Dodatkowo stwierdziliśmy, że menadżer projektu nigdy nie może mieć 100% pewności co developer to podejście inny i stwierdziliśmy, że stworzymy sobie po prostu listę zadań, listę zadań, które muszą być okonane przy każdym uruchomieniu projektu. Rzecz, która ładość prosta, ale w znacznym stopniu pozwoliła nam pozwoliła nam tworzyć jeszcze do przes strony i mieć pełną kontrolę nad tym, czy coś zostało zrobione, bo użytkownik, który tworzy nowy projekt od razu widzi, co musi zrobić i o czym musi pamiętać. Aktualnie mamy dwie fazy, w którym są właśnie informacje, co warto zrobić, a w przypadku jakichś zadań, które są cięższe i ważniejsze w weryfikacji, po prostu są oznaczone jako walidacje przez dwie osoby i wtedy mamy przynajmniej 99% pewności, że coś zostało zrobione. Mała, prosta zmiana, a naprawdę w dużym stopniu nam pomogła. Następny temat. Sama talista pokazała nam to, że powtarzaliśmy się w pewnych określonych procesach, uruchamianiem stron uruchamiania nowych projektów. Stwierdziłem, że w sumie tak naprawdę jeśli musimy powtarzać pewne procesy cały czas, to coś, może powinniśmy zmienić, żeby jeszcze firma zyskała. Może to naprawdę godzina pracy w kwestii całego projektu, ale godzina do godziny i tak naprawdę zarabiane. Odpowiedzią naszą był Baż, WP Glee, GIT i obsługa NODA. Już wyjaśnę o, co tu chodzi. Stworzyliśmy swój plik Bażowy, który uruchamia za nas projekty. Można to porównać do Joumana. Każdy może powiedzieć, o przecież to jest, ale stwierdziliśmy, że w sumie to jest kolejny generator, który jest dostępny publicznie i no wiadomo, kwestie bezpieczeństwa i tak dalej, pomimo, że to działam, nad czym będziemy mieli pełną kontrolę. Oczywiście jedni powiedzą po co wymyślać koło na nową, ale my stwierdziliśmy, że nam się to będzie upłacać. I teraz tak szybko zaprezentujemy, jak to będzie działać. Podajemy nazwę projektu, tytuł adres, e-mail, podajemy URL do repozytorium od razu i następnie URL do checklisty, którą pokazywają wcześniej. Script instaluje wtyczki i najnowsze wersje, które możemy sobie po prostu skonfigurować. Początkową, czyli usuwamy posty strony, wyłączamy publiczność strony, tak, żeby po prostu można było przeprowadzić ten development, instalujemy gal, po prostu wszystko się robi i tym kliknięciem. Teraz sam proces utworzenia nowego projektu trwa tak naprawdę tyle, ile trwa od widać, razy 16, bo jest tam przyspieszone tak naprawdę. Czyli to jest tworzenie projektu, czyli zysk naprawdę duży, duży, duży. Nam w dużym stopniu się to sprawdziło. Mamy pełną kontrolę nad tym, jest instalowane i po prostu dużym stopniu ułatwiło nam sam proces developmentu. Teraz tak szczękowość się przelecę, tak jak widzimy, utworzenie automatyczne bazy danych, nie musie się tym przejmować, pobranie naszego startera z repozytorium, naszego prywatnego, co też wzmacnia tak jakby bezpieczeństwo. Następnie instalację WordPressa z ustawieniem rewrite rule dla waperma linków, usunięcie sidebarów. Przy każdym uruchomieniu projektu co było nam tak naprawdę niepotrzebne. Co tam dalej? Od razu dam po bazy danych, zrobiliśmy sobie do katalogu pusznięte zmiany do impozytorium z inicjalnym komitiem i po prostu informacje, że motyw został zainstalowany i przeglądarko od razu uruchamia stronę. Naprawdę z naszym stopniu przyspieszyło nam to pracę, to, że mamy swój system, sam development tego nie trwał wiele, bo to tak naprawdę wpisanie, zwalanie tego, tak naprawdę zys był naprawdę bardzo duży. Ok, następny temat, który się w dużym stopniu powtarza to pracę wedle standardów WordPressa. Każdy może powiedzieć, ja mam swoje standardy, ok, ale tworzymy system oparty na WordPressie i myślę, że powinniśmy się słuchać tych standardów i robić tak, żeby jak najlepiej się do tego trzymać. Myślę, że każdy developer tutaj na tej sali przynajmniej powiem raz widzieć tą stronę, fajnie by było jakby każdy się do tego i jak najczęściej zaglądał, bo po tym co dostajemy na przykład od klientów widzimy, że niektórzy mają totalnie to gdzieś generują tyle masy, niepotrzebnych problemów i straty czasu dla nas i dla klientów. Tak naprawdę o tym się nie będę za bardzo rozwodził, bo będzie prezentacja dzisiaj chyba o 15.00 o coach sniferach. Myślę, że kolega tutaj wszystko wyjaśni nam to z naszym stopniu pomogła i tworzyć dobry kod i również walizować ten kod, że ktoś pracuje, ja od razu widzę te czerwone lałki się świecą gdzieś tam, i nawet nie muszę widzieć co tam jest robione, ale już mówię, coś tu jest nie tak, proszę, to zmienię, ale o tym będzie po prostu osobna prezentacja. Tu jest taki szybki przykład co nam pozwoliło, jak po prostu wygląda walidacja kodu. Myślę, że wszystko jest jasne i przyjemne. Dodatkowo mamy masę usprawniej, chociaż profety to, że sable, które ułatwiają nam ułatwiają nam po prostu pracę ze standardami, chociażby wyrównali właśnie tablic, które tutaj nam Kuba Miki kiedyś zaprezentował, gdzieś tu chyba jest, mam nadzieję, a jest tam, które naprawdę znacznie ułatwia i to tak naprawdę może się wydawać, że to jest żadna wartość dodatnia, ale w przypadku dużych projektów jest naprawdę bardzo zbieża. Kolejny temat powtarzania automatycznych, automatyzowanie powtarzanych procesów. O tym była prezentacja. Browser, synka, galpa, kompilacji, skryptów, po prostu takich rzeczy, które znacznie ułatwiają nam przez pierwszą pracę, niwelują to, że musimy coś robić ręcznie. Także korzystamy z tego, bo warto naprawdę. Następny temat myślę, że największy, jak odpowiednia architektura, jak zbudowanie takie architektury pomogło nam tworzyć jeszcze, ale przez stronę internetowego. Myślę, że tutaj głównym określeniem, które pomogło nam, tak jakby punkt, który jest wskazaniem tego, co zrobiliśmy, jest modularność. W naszym przypadku ja sam bardzo dużo daję dobrego samej modularności, ponieważ to w dużym stopniu po prostu łatwe na pracę. Niedziałająca funkcjonalność, nie wiem, schema ork, sprawdzamy moduł schema ork, a nie, że sprawdzamy pick function z PHP i szukamy na siłę i są funkcje odpowiedzialne za schema ork. Zmieniliśmy nagle się, w ogóle wszystko wymaliło. To jest niestety problem. Modułowość wprowadziliśmy w wielu elementach podczas developmentu, o których teraz właśnie opowiem. To nam się bardzo nie podoba. Z przykład z projektu jednego ginięta po prostu, który otrzymaliśmy, jest zgodny z WordPressem, ale z naszej perspektywy jest to polskie angielskie, które jest na prawdę czymś, według mnie nieakceptowanym. Stwierdziliśmy, że chcemy z tego czegoś zrobić właśnie coś takiego, czyli pełny minimalizm, który naprawdę w dużym stopniu nam ułatwia pracę. To jest coś, co, nie wiem, mi się to na przykład bardzo podobało, moim kolegom właśnie zespołu też. Wiemy, gdzie czego szukać, wszystkiego jest mało i po prostu niech tak zostanie. Po prostu motywów. Pierwsze, co zaimplomentowaliśmy, to przerzucenie takiej bezstworzenia obsługi, modułowania szablonów. Teraz zamiast po prostu takiego elementu, gdzie to jest zgodne, stworzyliśmy swój system, który mamy katalog templates i już pokazuję, jak to działa. Cześć takiego możemy stworzyć za pomocą po prostu filtra, template include, z tego, co kojarzę. I tutaj na przykładzie widać, na przykład page, na przykład singlebooks.php przeanalizował, czy system nie ma gdzieś folderu, które jeszcze jest takie jakby idikiem, czyli template, slashbooks, slash singlephp. Zainplomentowaliśmy to i w dużym stopniu nam ułatwia to pracę, ponieważ teraz zamiast masy plików w głównym katalogu folderu mamy wszystko strukturyzowane, jest moduł Outdoors, Books i Libris. Tak naprawdę mamy błąd w templatce Books. Wchodzimy tylko, wiemy od razu, nie wiem, nie powiem, że po cienku będzie się dało w to trafić, ale wiemy, gdzie, czego szukać. Z masy plików zrobiliśmy po prostu moduły, które w znacznym stopniu przyspieszają szukanie i sam support stronę w późniejszym czasie, bo dużo klientów też po stworzeniem projektu interesuje się nasz support z naszej strony. Wiemy, jak zostało to stworzone, tak jak już wspomniałem, im mniej tym lepiej. To jest nasz startowy wygląd szablonu. Tak naprawdę, nic więcej tutaj nie ma, oprócz kilku pracowych plików. Oczywiście, jeżeli się dewelować chciałby coś zrobić w edeks standardów WordPressa, może to zrobić, bo to będzie działało. Z naszej strony to, co zrobiliśmy jest jedynie rozszerzeniem, które nam ułatwia pracę. To nie jest zmiana WordPressowa, ale to jest lepiej w tasem, szybciej, ale po prostu najważniejsze, żeby to robić lepiej. Nigdy więcej z Pagetti Code. Tutaj, myślę, że każdy z nas z obecnych tutaj się z tym zgodzi. Można oczywiście wykorzystywać wszelkie rzeczy, takie jak timbers, obsługą twiga. My stwierdliśmy, ok, to jest fajne, ale nie wszyscy tak naprawdę chcą się na przykład pod to przestosować. Nie używałem tak naprawdę aż tak bardzo twiga, żeby w jakiś sposób się opowiedzieć, ale stwierdziłem, że możemy coś zrobić, żeby może z tego twiga nie korzystać. Tutaj na kodzie widać, jakie było pierwsze nasze podejście do tworzenia stron i jak wygląda często podejście deweloperów zaportowanych przez nas w stronach. Naprawdę plik chociażby menu PHP, w którym jest 80% kodu PHP odpowiedzianego za przygotowanie i kilka linie kodu HTML, który tak naprawdę wyświetla. Wyświetla dany element na stronie. Z naszej strony to jest dość trudne w utrzymanie. Nawet jeśli on jest ładnie ze standardami napisane, to stwierdziłem, że jednak trzeba to zmienić i poprawić. Stwierdziłem, że trzeba coś poprawić. I tak, o modułowości po stronie backendu opowiem, ale jest ona w dużym stopniu i w pierwszym przypadku zmieniliśmy podejście na takie, że do przygotowania danych wykorzystujemy tylko i wyłącznie kontrolery. Plik menu PHP w katalogu templates ma tylko wyświetlić dane. Nie, że nagle przerabia 1000 funkcji, które właśnie w tym pliku modyfikują te dane. Nie, tak nie robimy, po prostu wykorzystujemy kontroler, który przygotuje dane, jak tam tylko będzie ścią. Deweloper po stronie front endu, wywołuje funkcję get menu, która pobieży sobie dane, przygotuje i załaduje odpowiednią teplatkę. Front endowiec schodzi do menu PHP, wywołuje funkcję get menu, która na przykład korzysta też z innych teplatek i wszystko jest pięknie ładnie przyjemnie. Też to podejście w pełnym stopniu może nie jest idealne, ale w naszym przypadku się w 100% sprawdza. Dodatkowo rozdziela pracę po stronie backendu i front endu. To jest problem przez czytanie kodu ze masyronnego PHP. Tak naprawdę już nie mam problemu, bo ma wywołanie jednej funkcji tak naprawdę. To w dużym stopniu nam pozwoliło zainplementować taki, nie powiem, że to jest właśnie twig, ale to takie właśnie fajne rozdzielenie warstwy danych od front endu i HTML. Dodatkowo wprowadziliśmy oczywiście modułowość również w JavaScriptcie. Sam temat modułowości w JavaScriptcie jest opisany, w końcu przez Toda Moduł. Developer opera, który jest, nie wiem, być może słynny właśnie wśród program stóp Java Script i fajnie opisał, jak działa sam zarzadz modułowość, jak można go wykorzystać. Uniknęliśmy dzięki temu również plików main.js po 10 tysięcy linie kodu, gdzie nic nie było czytelne. Jedna funkcjonalność, jeden osobny moduł. To po prostu nam liweluje problematyczność szukania błędów, modułą, której by funkcja kukisów wchodzimy, kukis, brzejez i analizujemy. Coś nam się nie podoba, wyłączamy. Tak wygląda moduł w takiej naprawdę prostej postaci. Nie będę się rozwodził, co jest dokładnie, bo to można sobie po prostu przeczytać. Modułów czytujemy, tak jak tutaj widzimy jeszcze manualnie, zastanawiamy się nad implementacją webpacka, ale, bo wiadomo, ciągle się trzeba rozwijać rzeczywiście, ale jak na razie nam się sprawdzam, że po prostu poświęcimy te 2 sekundy manualne wpis, które zostanie potem przerobione przez galta i wczytane. I tutaj jest przykład, jak to uruchamiamy. Tu są dwie rzeczy. Pierwszy to jest właśnie sama inicjacja modułu, czyli podczas uruchamienia strony po dokument red i odpalany jest inicjalizacja modułów bugs.js, i on sobie robi swoje, tak naprawdę, template tutaj ten, jakkolwiek w niego nie ingeruje. To jest po prostu osobny moduł. Przecież nie ułatwia sprawy, bo wiemy, gdzie tego szukać, wiemy, co naprawiać. Możemy tutaj wspomnieć też o tym, co zaimplementowaliśmy sejda, czyli przestrzenie nas. Jeśli mamy stron, tak naprawdę w tym układzie, moduł bugs.js zostanie uruchamiany tylko na stronie, która jest templatką książek, czyli będzie template bugs.chp. Ponieważ w naszym systemie możemy wziąć każdą klasę zbody, dodać ją jako przestrzeń i po prostu dzięki temu mamy pewne, że kod uruchomi się tylko na tej jednej, konkretnej stronie. Możemy tu wykorzystać na przykład page ID 41. Co niby też nie jest fajne, bo potem wchodzi tłumaczenie i się wszystko rozwala, bo jest inny idik, ale w takim podejście naprawdę w naszym stopniu ułatwia nam to pracę. Dodatkowo stwierdziliśmy, że ok, jest ECMAS Clip 6. W sumie może ktoś z naszych developerów będzie chciał korzystać. To myślnie zaimplementowaliśmy obsługę jest transpilowana za pomocą Babel, a jeśli ktoś chce po prostu może robić wszystko, to nie jest tak, że narzuca na tylko czyli QR, bo jest łatwe. Tak nie jest. Jeśli ktoś chce się rozwijać, my też jesteśmy na tym nastawieniu jest coś takiego w naszym systemie i nie trzeba tego naprawdę się przejmować. Jak to teraz było, jak to trzeba było dodać ten Babel i w ogóle nie działa. W naszym przypadku to już działa do myślnie, możemy korzystać. To jest pewne funkcjonalności. Czyli, nie wiem chociażby, CPT bugs, jeśli mamy jakieś elementy z tym związanem rzucamy to tylko do jednego pliku. Ktoś może powiedzieć, a potem się dogeneruje 20 tysięcy plików. No ok, dogeneruje się, ale jeśli masz 20 tysięcy plików zawierających jedną funkcjonalność, to jest lepsze niż 100 tysięcy w niej kodów jednym pliku. I myślę, że moi koledzy zespołu frontalowego się z tym zgodzą, i myślę, że każdy mu to ułatwia. Następnie do prosto sprawy korzystywanie mixing było to spowodowane tym, że przeprowadzaliśmy bardzo dużo procesów optymalizacyjnych. Klinci korzystają z Google Fonts. Ok, fajnie, ale bardzo często Google Fonts było wyświetlane jako zasób, który można zmienić w PageSpeed Insights i stwierdzić, co możemy sobie z tym zrobić. Dodawanie rodzin fontów może nie problematyczne, ale znowu trzeba było powtarzać pewne procesy. Napisaliśmy prostą, naprawdę mixingę, która na podstawie nazywnictwa plików fontów generuje nam po prostu font face-a. Mała, prosta zmiana a cieszy od tego momentu zero informacji w PageSpeed Insights o fontach, skok naprawdę w punktach, co dużo jest dla klientów jest ważne bardzo dużym. No i oczywiście też do samego 20 tysięcy razy domyślnie imprementujemy bootstrap 4. Lightboxa z obsługą po stronie PHP, czyli domyślna obsługała się Galileo WordPressowy, żeby też nie trzeba było tego postawienia imprementować. W od razu wczytujemy swój perał praktycznie przy każdym projekcie wykorzystujemy tę bibliotekę, bo jest naprawdę świetna. Następne, modułowość i PHP, czyli jak zaczęliśmy budować optymalne strony internetowe, ok, no i co możemy z tym zrobić. W dużym stopniu zależy to od samego projektu, bo im za bardziej zanosowany projekt z strony może działać wolniej, ale stwierdziśmy, że już na samym początkowym etapie developmentu powinniśmy robić coś, co przyspieszy to i znowu ułatwi pracę. Oczywiście na sam początek tutaj mowa o obiektowości i jak usprawnić WordPressa poprzez obiektowość. Fajny zrzut ekranu po prostu jak obiektowe programowanie powinny wyglądać, a jak tak naprawdę wygląda. Myślę, że to każdy się potrafi odnaleźć w tym, ale jednak próbujemy całą siłą próboczą naszą być po tej lewej stronie, żeby to było ładne i przyjemne i zawsze się udaje, ale staramy się robić wszystko, żeby to tak wyglądało. Ok, ale tu się może zrobić pytanie, hmm, WordPress, motywę i obiektowe programowanie. Jest w tworzeniu tak jakby developmentu i nie informuje o tym, albo nie informował, nie wiem jak teraz wygląda sytuacja, o tym, żeby kierować się ku obiektowości. Wszystko jest raczej takie liniowe, nie ma zalecenia ze strony WordPressa, chyba, żeby nie generować tysiąc linkowców functions.php. Raczej tej modułowości się nie wykorzystuje domyślnie, szczególnie przez początkujących developerów. Ok, jak możemy to zmienić? Co możemy zrobić, żeby po prostu jednak to zmienić? No, po prostu prowadziliśmy tą obiektowość. Prowadziliśmy auto ładowanie KRAZ, co jest też już w zaleceniach PHP, w dokumentacji PHP ładnie opisane, to jest bardzo prosta sprawa, która opiera się tylko i wyłącznie na odpowiednim napisaniu wyszukiwania tych konkretnych plików i odpowiednie na zewnictwie. Czyli, że przy jakichś funkcjonalnościach już nie musimy używać tego Require Once, przy każdym mieście użyć danej klasy, bo system robi to automatycznie. Inna zaleta jest taka, że od razu mamy zgodność ze standardem na zewnictwa plików w WordPressie, ponieważ z tego co kojarzy właśnie takie zalecenie, że klas, na przykład PHP, coś tam, dwie pieczenie na jednym obniutach, naprawdę. Co dalej? Tutaj duży udział w tym ma właśnie kuba Miki-ta, również. Pokazał mi kiedyś coś takiego w jego kodzie, co bardzo mi się spodobało. Było to wykorzystanie singletona. Bez czego teraz sam, chociażby sama moja praca, jest super ułatwiona. Świetne to jest bardzo bardzo bardzo każdemu. No i możemy sobie pomyśleć, okej, jednym się kojarzy z bliski, drugim się kojarzy z wrocy projektowym. Jak czasem fajnie mieć to pierwsze, no to drugie, szczególnie przydaje nam się właśnie w pracy. Tu jest krótka właśnie informacja o tym, czym jest singleton i myślę, że ta formuka w stuprodzach oddaje potrzebę implementacji w naszym motywie. Jeśli chcieliśmy tworzyć dobre strony, musieliśmy ułatwić użytkownik, który nie miał pojęcia o obiektowości, może mieć problem z tym, jak na przykład uzyskać dostęp do tego, co stworzył. To po prostu typowe problemy związane z obiektowością. Chcieliśmy to rozwiązać, bo chcieliśmy ułatwić samo wdrożenie na tego użytkownika w projektowanie. No i w naszym przypadku stworzyliśmy sobie globalną funkcję i pełną obsługę i zapakujemy i fajnie działa. Nie, zainementowaliśmy tutaj kilka rozwiązań między innymi moduły publiczne, moduły prywatne, takie, z których chcemy korzystać na froncie i z takich, z których nie chcę na przykład na froncie korzystać. Oczywiście odpowiednio obsługa tego, jeśli użytkownik się pomyli i zły moduł spróbuje czytać, którego na przykład nie ma. Tu mamy fajny przykład nie wiem, możemy posiadać system obsługi właśnie schemy org, które pobieranie danych do tej schemy na przykład są bardzo czasopłonne i na przykład jedna inicjalizacja danych, które są wykorzystowane w tym module trwa jedna sekundę i przez jakiś tam przypadek ktoś tam chce te dane wyświetli w dwóch miejscach właśnie w header i futerpah.pl w normalnym podejściu myślę, że każdy początkujący tak, ale wywołanie pierwsze jest headerpah.pl następnie chce wyświetlić to futerze i wykorzystywuje znowu tam samą funkcję. Tak naprawdę może powiedzieć, że jest zbędne wykonanie kogu czyli powtarzamy się co według mnie nie powinno być miejscowe, jeśli są możliwości do niepowtarzania się to tego nie robimy. Przypalkuje się, byśmy chcieli taki kod, oczywiście jakikolwiek inny wyświetli nam przykład 100 razy z bazą, wybieramy dane i tak dalej wiadomo są systemy kaszujące ale to jednak jest zbędna w naszym przypadku a to teraz przejdę do tego jak to zostało zainklętywane czyli po prostu powiem o modułach tu jest przykład właśnie incrementacji modułów obsługi linii lodniczych obsługi linii lodniczych pierwsza klasa WBS unit jest taki funkcjon pah.pl który zawiera tylko i wyłącznie inicjalizacji modułów w naszym przypadku tak jak widzicie mamy trzy moduły oczywiście z tamtego więcej ale gdzie są wycięte mamy Airlines, Directions i Insurance jedne z nich są publiczne czyli takie z których funkcje możemy uruchamiać gdziekolwiek oraz prywatne czyli takie które robią coś do czego inny użytkownik nie powinien mieć dostępu te moduły mogą mieć w sobie podmoduły archiwum czyli funkcje odpowiedzialne za archiwum i singo czyli po prostu obsługa singopapę widać że koty jest niezgodne z tentadarów od presa bo są nie ma spacji nie ma wyrównania to nie jest singletone? nie a nie to nie jest okej to jest coś czego oczekiwałem od tej prezentacji wiadomo czego się uczymy po prostu nastawienie na takie ale porozmawiałem potem no to okazało się że to nie jest singletone ale jest to coś co znacznie ułatwia nam pracę dzięki temu po prostu ze struktury ze struktury naprawdę wielkiego systemu masy plików zrobiliśmy sobie osobne moduły jeśli po prostu chcemy zmienić coś w module linii lotniczych wchodzimy do tego i tego katalogu bo wszystko jest jasne jakaś tam porównania myślę że jednoznaczne które sprawiły że np. ja sam osobiście bardzo lubię tą funkcję WPS następne to też w sumie Kuba Mikita pokazała fajne rzeczy czyli jak podejść obiektowem poradzić sobie z akcjami i filtrami domyślnie jeśli chcemy fanczes.hp dodać jakiś filtr byliśmy to w taki sposób to było spoko działało to byliśmy w podejście na obiektowne i robiliśmy to w taki sposób czyli w konstruktorze sobie dodawaliśmy akcję obsługę funkcji w podejście takim które teraz prezentujemy wykorzystujemy właśnie bloki kodów do zarządzenia akcjami, filtrami i shortcodami w pewnej klasie po prostu tworzymy funkcje publiczne i za pomocą adnotacji action, filtr i shortcut tworzymy sobie po prostu akcję znaczne z tym i równoznaczne z tym dlaczego coś takiego zrobiliśmy to też miało się rozmowa z kubą na ten temat może być tak jakby potrzeba wykorzystywania klasy sum class z jakiejś tam innym miejscu w kodzie przez to jeśli byśmy to wrzucili w konstruktor to te akcje są dodawane i w pewnych sytuacjach może być to bardzo niepotrzebne w naszym przypadku w sposobie jakim implementujemy te moduły i inicjalizujemy ten filtr zostanie dodana tylko i wyłącznie raz tylko i wyłącznie w jednym filtrze nie będzie problemu wykorzystywania tej klasy w innym miejscu i nie będzie problemu z pobielaniem zadań niepotrzebnie bo na tym zyskujemy jeśli chodzi o kwestię optymalizacji teraz opowiem właśnie o kilku jeszcze wczorach które w dużym stopniu sprawdzimy nam pracę w naszym przypadku zainplementowaliśmy kilka funkcji które ogarniają czy jesteśmy teraz na devie czy na przykład jest środowisko produkcyjne wszystko się opiera o prostą sprawę np. dostępność pliku.staging np. informuje BH że jest to środowisko stagingowe albo deweloperskie na pewno są jakieś nowe systemy ale wiadomo też my się ciągle rozwijamy ciągle aktualizujemy te motywy jak coś silnego jak na razie nam się to sprawdza i jest bezproblemowe w naszym przypadku za pomocą tego modułu domyślnie usuwane są wersje asetów ustawiane wersje asetów przez problem skaż na pewno każdy z nas miał ten problem że odświeżali w niej strony nie widzieliśmy zmian bo już skarżowały pliki z wersją 1.0.0 w przypadku takiego rozwiązania nasz system u detekcji, że jesteś na stagingu po prostu używa funkcji time która generuje time stopa jako wersja przez co mam pewne, że te wersje będą nie będą problematyczne następny temat wyłączanie wtyczek domyślnie te dwie wtyczki są wtyczki, które używamy dużą stopnią, które są naprawdę super myślę, że każdy jest na jej korzystany ale w naszym stopniu był taki problem że robiliśmy zmiany odpalaliśmy stronę trzeba wejść w admin wyłączyć wtyczkę i tak dalej każdy musiał to robić w naszym systemie, jeśli wyklejemy, że jest staging możemy sobie stworzyć listę wtyczek które będą domyślnie wyłączone nie będzie się po prostu wdało wyłączyć na stagingu jeśli będziemy chcieli jednak wyłączyć po prostu wyłączamy obsługi tej funkcji jeszcze się nie zdarzyło, że my chciały je wyłączyć na stronie stagingu bo one są to niepotrzebne i nie ma problemu tego wyłączyć następny temat to chociażby temat, żeby każdy podczas deploy'u pamiętał o tym, żeby zmienić hasło test 1234 system, myślę, że najbardziej popularne hasło system po wykryciu, że to nie jest jednak środowisko stagingowe wyświetla informacje o tym ok, jesteś na środowisko produkcyjnym czy jakimś tam innym wejść proszę zmienić hasło, bo bezpieczeństwo dużym stopniu połatwiło nam to proces weryfikacji tego, czy ten system jest bezpieczny a hasło zostało zmienione następny a, również dodaliśmy możliwość dodawania własnych warunków za pomocą akcji które tutaj są wypisane możemy to zrobić konkretne akcje na stagingu konkretne akcje na produkcji co dalej sam temat bezpieczeństwo które mi się, bezpieczeństwo które mi się zainsprowaliśmy po prezentacjach Krzysztofa Dłużdża i temu też dziękujemy, bo w znaczeniu stopniu pozwolił nam stworzyć system, który to myślnie już implementuje pewne rozwiązania, pomaga wesprzeć to bezpieczeństwo czyli, no przykładowe rzeczy to osobny WP-config DB powinno być czyli, że bażądane w osobnym pliku przelowywana usunięcie wersjonowania WP co nie wzmaga jakoś super bardzo bezpieczeństwa ale jest jakiś jakąś tam może być przeszkodą usunięcie numeracji użytkowników czyli, że musieliśmy robić znowu przy każdym projekcie teraz domyślnie jest to usunięte i nie ma takiego ryzyka no, oczywiście ochrona plików systemowych i blokada popularnych botów czyli też raz na jakiś czas aktualizujemy sobie naszym listę tak, żeby po prostu wyliminować już na samym początku developmentu temat, tak jakby tych złych botów które na przykład mogą wejść na stronę Kolejny temat, który się powtarzał bardzo jest to obsługapiku HTA Access czyli, jak się robiło to ja nie pamiętam to był problem dość często powtórzalny często mieliśmy pytania Ej, masz dziś link do tego, do tamtego i tak dalej okej, te linki były no ale czemu po prostu tracik czasem coś takiego jak to można wszystko z nim fragmentować stworzyliśmy sobie swój plik HTA Access, który posiada pewne funkcje jak tutaj widzimy chociażby domyślnie zakomentowane będą funkcje przekrywanie do HTTPS fajna funkcjonalność znajdują na stronie produkcyjnej typu robimy jakiś backup albo małe zmiany w systemie którego upload folder zajmuje na przykład 5 GB no to jeśli to jest mała zmiana to po co to zmieniać robimy sobie środowisko robimy bazy danej pobierane pliki i za pomocą takie jedne przekierowania zamiast wczytować pliki lokalnie wczytujemy z produkcji coś, co też fajnie ułatwiło na samym schemat pracy przeżywała się poprzez HTA HTTPS jest usuwana numeracją użytkowników no i dodatkowo też zainplimentowaliśmy sprawdzone w dużym stotniu systemy kaszujące pomogło nam to rozwiązać problem znowu pytania się i gdzie masz te regułki że ten cash tak fajny jest i że PageSuite Insight skakuje 20 punktów wyżej a mi to nie działa coś tam coś tam to był pewien problem i stwierdziliśmy że jeśli to działa to po prostu wżyliśmy i teraz robimy optymalizację w 3 sekundy naprawdę z doświadczenia mogę powiedzieć, że samo od komentowania tych dwóch ostatnich modułów daje nam bardzo duży zysk na PageSuite Insight po prostu wiadomo, że to nie jest jedyny wyznacznik ale ten produkt z doświadczenia wiemy, że przychodzi klient i mówi ej, ja chcę tu sto na sto nie próbujemy tego, że to nie jest wyznacznik dobrej strony a tam chcę tu sto na sto i dzięki temu po prostu ułatwiamy sobie problemy, który występował było debugowanie no uważamy, nie debugujemy nigdy na serwerze klienta ale wiadomo, czasem trzeba ja to powiedziałem w taki sposób, że manualnie sobie dodawałem warunki tak jak sprawdzający IT-u rzutkowni każe, bym tylko ja wiedział o konkretnej logii no to nie by działało w opadkach było okej ale stwierdziłem, że można coś to jest taki system, który zapomocował się tej naszej funkcji WPS dampuje, które wyprintuje nam zmienną w naszym przypadku on wyprintuje nam zmienną tylko i wyłącznie wtedy, kiedy jako get jako parametry get jest podany test czyli adres będzie odladałym egzemplom slash znak zapytania test i wtedy dopiero ta zmiana zostanie uświetlona prasła zmiana, ale myślę, że w dużym stopniu ułatwiło nam problem tego, że debugujemy coś nie zawsze spowodowany na przykład jakąś zmianą naszą dzięki temu inni klienci nie widzą tego, widzimy to tylko my następne coś, co po prostu mi przeszkadzało wraz z rostem systemu wzrastało skomplikowanie ułożenia linków w menu administracyjnym oczywiście była to tego wtyczka ale też mamy takie podejście że im mniej tym lepiej robimy funkcjonalną funkcjonalność, nie instalujemy wtyczki jeśli możemy coś napisać sami co działa i nie zajmij dużo czasu to to zrobimy mamy w naszym motywie zaimplementowaną obsługę po prostu przerzucania elementów menu administracyjnym co również ułatwia nam pracę i tak jakby robi porządek to jest ważne dodatkowo jakieś tam dodatkowe rzeczy to po prostu dostosowowanie wyglądu editora do wyglądu strony czyli fonty, kolor, rozmiary czy cionek są po prostu wczytowane już do panelu administracyjnego przez co prostym sposobem dajemy klientowi utraszenie, że używa jakiegoś tam bardzo podstawowego page buildera teraz oczywiście w rodziku ten web do przesła się zmieni ale przynajmniej tyle mogliśmy zrobić dla klienta żeby jeszcze bardziej połączyć na przykładem sekcji administracyjną z wyglądem no i też stworzyliśmy obsługę żeby też zwolnie trzeba było w dwudziestu miejscach w kodzie uruchamiać funkcji wp nq admin scripts jakoś tak to było po prostu jest jeden pick który sobie możemy edytować robić z nim sekundek on zostanie automatycznie wczytany dodatkowo mieliśmy konkretne wymagania tłumaczeniowe co jest też pewnego rodzaju procedurą u nas nie akceptujemy kodu który nie wykorzystuje funkcji tłumaczeniowych nigdy nie wrzucamy jakichś treści ze względu na to że klient nigdy nie wiemy co klient będzie chciał bo o wiele przypadków że robimy stronę ok klient mówił że nie będzie nam przedtłumaczenia no to robimy jest 500 milionów kodu i 500 milionów linie gdzie tekst jest nasz trudny a potem a może ja w sumie jednak bym chciał te tłumaczenia i stoimy od razu mógłbyś powiedzieć niestety to takie piękne nie jest a my się zabezpieczamy już na początkowym etapie wykorzystujemy snippety sublime gdzie samo dodanie takiej obsługi funkcji tłumaczeniowe tłumaczeniowe i trwa ułamek sekundy tak naprawdę czyli tyle samo ile byśmy po prostu wkrapali kod z ręki bardzo się tego pilnujemy bo naprawdę było już nie raz przypadków takich że że klient po prostu po jakimś czasie dopiero się zdecydował na otłumaczenie strony i potem ktoś musiał siedzieć i każdą wynikę zmienia za obsługę tłumaczeniowe żeby po prostu co bardziej zmienić po prostu na w dużym stopniu pomogło jeśli chodzi o jakieś inne rzeczy no to w dużym stopniu wykorzystujemy to co możemy sautomatyzować czyli snippety chociażby tworzenia właśnie cpt do popularne do tworzenia short call wszystko co możemy zrobić z jednym gestem wykorzystujemy jest to właśnie w naszych procedurach a też jeśli chodzi o procedury to są ważne w naszym przypadku w dużym stopniu pozwoliły i na weryfikacje pracy i na tworzenie po prostu dobrych stron bo posiadają zatrudniając nowego developera oczywiście on ma może małą wiedzę ale od razu może robić projekty tak jak my chcemy nie zawsze go zmusimy ale może robić to po prostu dobrze oczywiście co dalej jak będziemy rozwijać to będziemy go zmieniać tak żeby ten singleton był faktycznie singletonem to teraz wyciągniemy no i oczywiście rozpoczęliśmy pracę na tworzenie implementacją systemu które wspomogą nam wykorzystywanie glutenberga chcemy po prostu że jeszcze jest takie infezje naprawdę dużych testów tworzyć po prostu swojej bloki konkretne ale to jest to jest totalna przyszłość to chcemy po prostu zaimplantować glutenberga w naszym starterze tak żeby wykorzystywał wszystko to co zostało pisane wcześniej myślę że to będzie tyle oczywiście mówić tutaj jeszcze długo ale no nie mam na to czasu po prostu chciałem zaprezentować kilka rzeczy które naprawdę pomogły spełnić pracę i myślę że teraz komuś z was one się przydadzą wyszuka sobie odpowiednie informacje i po prostu przyspieszy pracę no i będzie robił po prostu lepsze projekty dziękuję bardzo