Refaktorizace
Vyvíjím si střeva tohoto webu sám, web běží nad databází mySQL, naprogramovaný je v PHP. Během více jak dvaceti let jsem občas přidal nějakou funkcionalitu, občas jsem si zaexprimentoval, poznával jsem zákonitosti tvorby a provozu webu. A střeva webu se stávala stále složitější.
Je dobrou praxí při tvorbě software jednou za čas se zastavit a provést tzv. refaktorizaci. Zrevidovat kód programu, optimalizovat databázi.
Naposledy jsem to dělal v roce 2015 a od té doby jsem nikdy neměl sílu se do toho pustit. Představa, že budu 14 dní na plný úvazek přepisovat a ladit, mě odrazovala.
Až teď. Před deseti dny jsem se rozhodl, že si zkusím platit ChatGPT, rozhodl jsem se pro Plus a Codex. A že zkusím refaktorizaci webu provést s Codexem.
Nainstaloval jsem na svoje PC aplikaci ChatGPT, založil projekt na přepsání webu a začala jízda. Zopakoval jsem pro ChatGPT základní teze, jak můj web uvnitř funguje, zadání, že ho chci přepsat a udělat to tak, aby stará a nová verze fungovaly vedle sebe, že chci změnit strukturu databáze a proč a jak si novo strukturu představuji. A že se může podívat na můj program v php souborech. ChatGPT mě překvapil, oznámil mi, že vidí kód i v databázi, pochopil, že mám php kód v databázi a že se za běhu interpretují různě vložené kódy na základě mých html tagů v textu. Sám si našel konfigurační soubor, sám si vlezl do databáze. Čekal jsem, jak budu ručně kopírovat php kód, který mi ChatGPT navrhne, jak budu pracně vymýšlet postupný přechod ze starého do nového a pomocí skriptů ho realizovat.
Skutečnost všechno předčila! ChatGPT si četl můj program, pochopil, co to dělá, probral to se mnou, navrhl a zapsal sám program, proceduru, funkci do nového webu. Sám připravil novou strukturu databáze, sám přetáhl dohodnuté informace z databáze do databáze a sám je přeformátoval. Sám pořešil problém s kódovými stránkami, měl jsem CP1250, převedl vše to UTF8. A ještě si to sám testoval. Nic jsem nemusel programovat, jen jsem slovně sděloval, co chci jinak.
Nakonec došlo na spuštění u providera v internetu. Ukázalo se, že načítání některých stránek trvalo třeba 10 sekund. Neúnosné! Poprvé jsem se ponořil do kódu, který ChatGPT vygeneroval, zjistil, že má docela pěknou "úpravu", ale ty selekty do databáze byly blbě. ChatGPT nabízel řešení, ale byly to blbosti. Vyložil jsem mu strategii, jak na to má jít, za 10 minut to měl přepsané. Uploadoval jsem to do internetu a běhá to rychle. Za 10 dní - odhadem za 10 - 15 hodin mám tu největší práci za sebou.
Pro představu, jak to funguje. Napsal jsem Codexu: "I stránku potřebuji duplikovat. Přidej k tlačítku E možnost duplikace, udělal bych to jako odkaz do id stránky, který se zobrazuje u tlačítka E, po kliknutí na id stránky by se ukázalo pole pro zadání id nové stránky a po potvrzení by se okontrolovalo, zda nejde o duplicitu, když kontrola projde, naskočila by obrazovka editace stránky."
Odpověď za cca 20 vteřin: "Přidám duplikaci stránky přes její ID vedle tlačítka E. Po zadání nového ID se ověří, zda už existuje; pokud je volné, otevře se kopie v editoru stránky."
Za cca 3 minuty: " Soubory byly upraveny a spustil příkazy. Odkaz na ID stránky už vede k zadání nového ID. Kopie zachová obsah, sekci i další nastavení stránky a uloží se až tlačítkem Zapsat. Dostupnost ID kontroluji také při uložení, aby se nepřepsala stránka vytvořená mezitím v jiné editaci."
Po čtyřech minutách po tom, co jsem napsal zadání:
Hotovo v lokálním webu.
- Kliknutí na ID stránky vedle E otevře pole pro nové ID.
- Po potvrzení se ověří, zda je ID volné, a otevře se editor kopie.
- Kopie zachová obsah, sekci a nastavení původní stránky.
- Zapsat vytvoří novou stránku; Storno kopii zahodí.
Ověřil jsem celý průchod do editoru i databázové ukládání na dočasných tabulkách, včetně odmítnutí duplicitního ID.
Codex sám upravil program pro editaci obsahu webu a ještě myslel na to, že bych měl rozepsáno více věcí najednou. To mě v tu chvíli, kdy jsem mu to zadával, ani nenapadlo.
Aby si někdo nemyslel, že to Codex naprogramoval sám a že si lze takto snadno naprogramovat střeva webu. Tak to určitě není. Codex měl k dispozici moje programy, ze kterých mohl vyčíst, jak ten můj web funguje, a řešil změnu struktury databáze, kterou jsem mu také navrhl já, ale tu otravnou práci, to přepisování kódu, to všechno dělal za mě, udělal za mě i přetahování článků ze staré databáze do nové databáze. Takže ta akce tak pěkně zafungovala proto, protože si Kodex mohl přečíst jak to má fungovat a já jsem věděl jak to má fungovat a věděl jsem také, jak to Codexu říct.
Zbyly nějaké stránky, kde se objevuje chyba, ty odladím postupně. Nové články už budu dávat je do nového webu.