Wpis użytkownika NooT w Hydepark
NooTAutorytet
30piorunówDlaczego tyle serwisów nadal leży?
Bo PHP to gówno. Ale nie sam język, a jego instalacja i utrzymanie. Pracowałem z PHP przez 13 lat. Każda aktualizacja była jak pudełko czekoladek - nigdy nie było wiadomo, co się spierdoli. Masa pakietów, rozszerzenia instalowane z paczek systemowych albo z PECL, w szczególnych przypadkach kompilowane ręcznie.
No i teraz mamy taką sytuację, że trzeba na szybko podnieść coś, co działa np. na PHP 7.x - stabilnej wersji w nieco starszych Debianach, na których działa większość serwerów ze stronami w PHP. Pomiędzy PHP 7.x a 8.x jest masa zmian, które nie są kompatybilne wstecz. Podniesienie dużego systemu, np. Wykop.pl, to może być robota na nawet kilka dni roboty, w zależności od użytych paczek itd.
No także mam nadzieję, że to niektórym nakreśla, w jak dużej kałuży łajna znaleźli się ci, którzy nie aktualizowali wersji na bieżąco
Komentarze (14)
Podniesienie dużego systemu, np. Wykop.pl, to może być robota na nawet kilka dni roboty, w zależności od użytych paczek itd.
Jeszcze rok temu by to była prawda. Dziś?
"Claude, opakuj mi to legacy gówno unit i smoketestami, a potem podnieś PHP z 5.6 na 8.5 i doprowadź do stabilnego stanu".
I po paru godzinach masz. W razie potrzeby zrobi forki wszystkich starych zależności, które zostały porzucone 10 lat temu i nie chcą dać się podnieść do 8.5. W ostateczności wrzuci patcha na PHP 5.6 (zresztą jest juz dostępny...) i stwierdzi, że pożar ugaszony i nie trzeba aktualizować. Future is now.
Zresztą ta podatność też pewnie przez Claude została znaleziona. I tego będzie teraz pełno.
@szatkus-7 Mam zupełnie odwrotne doświadczenia.
Tylko znowu - nie mówię o pracy kreatywnej i refactorze, bo tu się może rozpędzić i trzeba z nim siedzieć. Mówię o założeniu mu kagańca i zleceniu doprowadzenia kodu do działania po podbiciu bibliotek czy wersji PHP, bez naprawy żadnych błędów po drodze. No i muszę chyba dodać, że mam spisane zasady i reguły architektoniczne, których Claude się po prostu trzyma.
@Shagwest o kurde, przecież nawet Opus 5.5 w dużym legacy przy dużo mniejszych zadaniach potrafi zrobić spustoszenie, a co dopiero natrzaskać testy i zmigrować w ciągu kilku godzin bez pomocy człowieka.
@NooT Jeszcze rok temu też tak reagowałem, że przeceniacie możliwości AI, co człowiek to człowiek. A od miesiąca, odkąd wszedłem w to na pełnej, nie napisałem linijki kodu. Za to oczytałem się jego masę. I rozmaitych raportów i audytów pisanych przez Claude.
I tak, nie jest to jeszcze poziom "zrób tak, żeby było dobrze", ale to kwestia czasu. Dziś jednak już w przypadku takich akcji jak właśnie podniesienie wersji bibliotek i doprowadzenie kodu do porządku, co jest bardziej mechaniczne niż kreatywne, jest po prostu mistrzem. Ogarnięcie clusterfucka w zaniedbanym composerze, którego rozwikłania nikt nie chciał się podjąć, to było pół godziny roboty - łącznie z audytem, czy dane paczki są potrzebne, z zastąpieniem porzuconych ich lepszymi odpowiednikami (i dostosowaniem kodu) i nawet sforkowaniem jednej z nich, którą będziemy mogli wywalić dopiero za jakiś czas, ale gryzła się z nowym Guzzle.
Rozwój nowego projektu to już grubsza sprawa, tu trzeba iść z nim za rączkę, ale efekt jest tego wart. Zawodowe programowanie się skończyło.
@Shagwest no to moim zdaniem mocno przeceniasz możliwości AI. Jest to narzędzie potężne, ale z mojego doświadczenia nie radzi sobie wcale tak wspaniale z pracą z systemami legacy. Szczególnie jeśli trzeba coś pokryć testami - bez prowadzenia "za rączkę" często generuje kompletnie bezsensowne przypadki testowe i tak naprawdę nie sprawdza nic. No ale wszystko to tylko teoretyzowanie... jak jest naprawdę pewnie się nigdy nie dowiemy.
@NooT Ej nie, testów prawie na pewno nie ma, wiec tego nie zakładam. Napisałem, że Claude opakuje najpierw to legacy gówno testami, znajdzie przy tym miliard błędów, a później będzie pilnował, by nic w tych testach się nie zmieniło ani nie naprawiło podczas podbijania wersji PHP czy bibliotek.
@Shagwest zakładasz tylko, że coś ma pokrycie testami. A ja bym się wcale nie zdziwił, gdyby tak nie było i teraz sraczka i testy manualne całości
Problemem w utrzymaniu php na takim Debianie jest fakt, że oni mieli i mają przez lata w d⁎⁎ie podbijanie wersji. Teraz dobrze to widać wersja stabilna ma wyższą wersję jak rozwojowa. Już dawno powinno być podbite ale nic z tego. To samo dotyczy subpakietow. Większość w wersji sprzed paru lat.
Dodajemy legacy syf. Pamiętam tak z 10 lat temu ogarnialem środowisko pod php 4.4 bo nie chcieli zapłacić za aktualizacje softu. Oczywiście sektor publiczny. Więc stary Debian i stary php wystawiony do internetu.
Dla mnie niepojęte jest robienie np. sklepu na wordpressie. Cms stworzony do pisania blogów ze zdjęciami śmiesznych kotków doczekał się pluginu który robi z niego sklep.
@30ohm Problemem jest to, że nikt nie chce za to płacić. Nikt nie będzie tego robić charytatywnie XD
Budżet by był, to i aktualizacje by były.
Znaczy no generalnie w większości języków programowania wystąpiłby ten problem jeśli by się nie aktualizowało na bieżąco. PHP nie jest jakiś specjalny tutaj. Owszem niektóre będą miały mniej zmian pomiędzy wersjami albo prostszy sposób aktualizacji ale nadal to jest raczej problem każdego języka a nie tylko PHP.
Nie żebym bronił PHP bo sam go nie lubię.
@NooT php jest tani, wybierają go klienci którzy nie chcą wydawać kasy na jakieś głupoty jak aktualizacje XD
"po co, przecież działa"
@Catharsis Z jednej strony tak. Ale z drugiej strony, ilość problemów w dużym stopniu zależy właśnie od architektury danego języka/sprzętu.
W takim np. sprzęcie sieciowym aktualizacja Cisco o dużą wersję to niemal gwarantowane problemy jeśli dokładnie nie przeczytasz patch notes. A taki Fortigate w 99% przypadków po prostu wstaje, a jeśli coś miałoby go położyć to jest wyraźnie napisane w trzech miejscach i jeszcze dostajesz przypominajkę w mailu.
@Catharsis to w sumie racja. Myślę jednak, że w przypadku PHP tych serwerów na starych wersjach jest dużo więcej niż w przypadku innych języków
@NooT Jakie 7.X jak 8.2 ma security patches do grudnia tego roku xD Trzeba było aktualizować według zaleceń xD