"Godhet utan vishet och utan
gränser är bara en annan
form av ondska."
(John Paterson)
"Mänsklighetens bästa är alltid
tyrannens alibi!"
"Det är synd att 99% av
journalisterna skall fördärva
förtroendet för en hel yrkeskår"
(Okänd)
"Om du ropar "Gud är stor"
samtidigt som du spottar på
skändade kroppar av judiska
kvinnor, så hävdar jag att
din gud inte är en gud värd
att tillbe!
"När försiktigheten finns överallt,
finns modet ingenstans."
(den belgiske kardinalen Mercier)
"Den som gifter sig med
tidsandan blir snabbt änka."
(Goethe)
"Civiliserade är de kulturer
och individer som respekterar
andra."
(Hört på Axesskanalen)
"Det tragiska med vanligt
sunt förnuft är att det
inte är så vanligt."
(Albert Einstein)
"Halv kristendom tolereras
men föraktas.
Hel kristendom respekteras
men förföljs."
(Okänd)
(Note: at the top of the page you can choose translation of this article to other languages, but don't expect the translation to be perfect "Välj språk" means "Choose language")
[Först lite kort om servrar och hemsidor för att göra denna artikel lättare att förstå för de läsare som inte är datorkunniga. En hemsida ligger på en server (ett datasystem med stor lagrings- och kommunikationsskapacitet och med direkt koppling till Internet). Privatpersoner och mindre företag hyr in sig på serverhotell, som har en serverpark, medan stora företag och myndigheter har egna servrar. Det finns olika typer av system för servrar. Ett mycket vanligt sådant är Apache (vilket mitt webbhotell har). Andra vanliga system är Nginx och Microsoft IIS. På servern finns också programvara för att köra olika typer av filer. På så gott som alla servrar finns en PHP-tolk (ibland säger man PHP-deamon, eftersom den, precis som en demon, är osynlig för användarna och jobbar i bakgrunden). Den kör alla hemsidor som är uppbyggda med PHP, vilket är det kanske vanligaste systemet idag för att bygga hemsidor. Namnet på textfilerna i en sådan hemsida har filändelsen .php, dvs filerna heter typ svenskhistoria.php, meny.php etc. För hemsidor som är uppbyggda med SSI (som min sida var innan jag konverterade den till PHP) är ändelsen i filnamnet .shtm eller .shtml och filerna körs med en SSI-tolk. Filerna heter i detta fall annas_julfest.shtm etc. Och är det en vanlig html-fil med ändelse .html (eller .htm) så startar Apache HTML-tolken etc. Filerna heter i detta fall flygmotorer.htm (eller flygmotorer.html). Jag har f ö en omfattande avdelning om flyg på hemsidan och där är nästan alla filer av typ .htm.
När någon vill läsa en viss fil på en hemsida så kontrollerar Apache (om filen ligger på en sådan server) ändelsen i filnamnet och startar sedan respektive tolk som visar sidan för besökaren. PHP-koderna på sidan (eller HTML-koderna etc) bestämmer hur sidan kommer att visas för en besökare. Servrar med andra system fungerar likartat som Apacheservrar.
Internetadresser kallas URL (Uniform Resource Locator). Exempelvis "https://tomtebolyckan.se/katalog.shtm" Bokstäverna https står för "Hypertext Transfer Protocol Secure". S:et anger att förbindelsen är krypterad och inte kan avlyssnas. Detta är det normala idag. Tidigare använde man okrypterade förbindelser som angavs med http. Den angivna adressen går till domänen tomtebolyckan.se ("se" står för Sverige). "/katalog.shtm" är adressen till en fil på denna domän av typ .shtm (SSI), dvs ett textdokument. Ibland har man också med bokstäverna www (vilka står för "World Wide Web") i adressen (https://www.tomtebolyckan.se). I vissa URL ingår www och i andra inte. Om www ingår i URL och man utelämnar detta får man ett felmeddelande att domänen inte kan hittas. Och vice versa. De flesta internetsajter idag (t ex min sajt) ändrar inkommande URL så att det alltid blir rätt (fattas www läggs detta till och tvärtom), varför det oftast inte spelar någon roll om man har med www eller ej.]
För en tid sedan stängdes min hemsida plötsligt ned och när man försökte gå dit fick man meddelandet att sidan inte kunde öppnas. Det visade sig att mitt webbhotell hade skaffat en ny säkerhetsprogramvara vid namn Monarx. Detta program är synnerligen nitiskt och stängde ned min hemsida, eftersom den betraktade min besöksräknare som en malware. Denna räknare använde ett urgammalt cgi-script, vilket Monarx således uppfattade som malware. Så det var bara att ta bort besöksräknaren, vilket inte gjorde så mycket. De flesta hemsidor idag har ju ingen besöksräknare. Efter att ha meddelat Monarx (via den s k cPanel, genom vilken jag administrerar min hemsida) att felet var åtgärdat, så kom sidan on-line igen. Sidorna såg emellertid konstiga ut och bl a så saknades det vänstra menyfönstret, vilket gjorde min hemsida nästan oanvändbar.
Min hemsida var byggd i ett format som kallas SSI (Server Side Include). Detta format är uråldigt och innehåller en del kod som anses vara osäker. T ex att hackers (eventuellt) kan använda denna kod för att köra sin egen kod på den server där man har sin hemsida. Så Monarx stängde helt enkelt ned vissa funktioner på min hemsida, vilka den såg som hot. Det var detta som gjorde att min hemsida inte visades korrekt. Efter att ha rådfrågat support på mitt webbhotell och även frågat AI insåg jag att bästa lösningen var att konvertera min sida till PHP (de flesta internetsajter är idag byggda i PHP, som är väldigt flexibelt och fungerar på i stort sett alla typer av servrar och klarar att driva stora webbsajter med många olika funktioner, typ banker och myndigheter). Att sätta sig in i PHP tillräckligt för att klara av en konvertering skulle antagligen ha tagit flera veckor för mig, så jag bestämde mig för att testa att använda AI för projektet. Gemini är ju Googles AI och är lätt tillgänglig från Googles sökmotor, så jag bestämde mig för att använda Gemini.
Jag började med att fråga Gemini hur jag skulle göra konverteringen på bästa sätt. Jag beskrev noggrant hur min hemsida är uppbyggd och vilka funktioner jag ville ha kvar efter konverteringen. I min långa artikel om AI (länk i slutet av föreliggande artikel) skriver jag om promptar, dvs de "instruktioner" man ger till AI. Ju klarare och mer korrekt man formulerar sina promptar desto bättre fungerar AI. Så jag lade mig vinn om att vara väldigt klar och tydlig och precis, vilket gav stor utdelning. Men tog samtidigt ganska mycket tid. Men det är det värt. Ordspråket "genvägar är senvägar" är verkligen tillämpligt i detta fall. Slarvigt formulerade promptar sparar inte tid utan slarvar bort värdefull tid. Och kanske dessutom leder till att AI:n ger felaktiga råd eller svar.
Gemini berättade att jag behövde ändra två kodrader i varje artikel på hemsidan (jag har nästan 500 artiklar) och talade också om för mig hur de nya kodraderna skulle se ut. Och att jag borde använda ett program som heter Notepad++. Detta är ett gratisprogem som ingår i GNU-projektet (en stiftelse som producerar utmärkta gratisprogram) och är avsett för textredigering, med lutning åt programkodning. Notepad++ har en fantastisk sök- och textredigeringsfunktion. Jag fick god hjälp av Gemini med alla detaljer. Programmet är avsett för programmerare och kräver därför vissa kunskaper innan man kan använda det. Gemini hjälpte mig med detta och angav exakt hur söksträngarna skulle se ut, dvs gav helt enkelt de exakta uttrycken att skriva in i de olika fälten i Notepad++.
Grundläggande anger man i Notepad++, i ett fält, vilket uttryck som skall ändras och i ett annat fält det nya uttrycket, som skall ersätta det gamla. Sedan anger man den mapp i vilken de filer som skall konverteras ligger. Och så talar man om vilken eller vilka filtyper som skall ändras (genom att ange dessa filtypers filändelse). Hos mig hade alla textfiler som skulle konverteras filändelsen ".shtm". Och så kryssar man för ett par andra saker ("In all sub-folders" och "Regular expression"). Och sedan trycker man på "Replace in files". Och vips, på 4-5 sekunder var det klart. Det var ju två kodrader som skulle ändras så jag fick upprepa processen en gång till. Hade jag gjort dessa ändringar för hand hade det tagit flera dagar och nu tog det några sekunder! Och det fungerade perfekt. Notepad++ går således igenom den mapp som anges och sedan alla nivåer av undermappar som finns i denna mapp och ändrar i alla filer den hittar av den eller de angivna filtyperna.
Innan jag gjorde konverteringen testade jag i liten skala. Jag lade en handfull filer av olika typer från hemsidan i olika mappar och undermappar och körde sedan Notepad++. Jag noterade då att vissa parenteser saknades i den PHP-kod som ersatte den gamla SSI-koden. Jag frågade Gemini och fick svaret att Notepad++ är ett smart program. Kanske för smart ibland. När man kodar använder man olika nivåer av parenteser (parenteser i parenteser i parenteser...) och parenteser av olika slag (vanliga parenteser, fyrkantparenteser etc). En del av dessa är onödiga rent logiskt men gör koden lättare att tolka för en människa. Gemini++ tar på egen hand bort logiskt onödiga parenteser för att snabba upp koden. Men i mitt fall så skulle inga parenteser tas bort, eftersom de var nödvändiga för att PHP-koden skulle fungera.
En av de två kodrader som skulle ersätta den gamla koden såg ut så här:
Men när denna kod (1) skrevs in i Notepad++ så försvann flera av parenteserna när koden klistrades in i filerna. Jag påpekade detta för Gemini och fick en annan kod (2) att skriva in i Notepad++. Den nya koden såg ut så här:
Backslash (\) talar om för Notepad++ att den inte skall röra tecknet som följer på backslash, dvs den skall inte ta bort parenteser eller $ eller punkten efter DOCUMENT_ROOT'\] när koden klistras in i mina filer, utan koden skall klistras in exakt som den står i (1). När jag skrev in koden enligt (2) i Notepad++ och tryckte på "Replace in files", så blev det rätt i filerna. Dvs kodrad (1) klistrades in där.
Utan AI hade det säkert tagit dagar innan jag kommit på hur Notepad++ fungerar. Eller så hade jag fått låta bli att använda Notepad++ och i stället ändra varje artikel för hand. Det är ju en avvägning. Att ägna dagar eller veckor åt att lära sig ett nytt program, som man bara skall använda en enda gång i livet, är ju ganska bortkastat. Och det är ju här AI kommer in i bilden.
Innan jag gick vidare insåg jag att det fanns ett stort problem med att konvertera till PHP. Filer i PHP har filändelsen .php medan mina gamla filer (i SSI) hade filändelsen .shtm. Att ändra filändelser i hundratals filer är inget problem i sig. Det finns gratisprogram som gör detta. Men det uppstår ett stort och allvarligt problem om man ändrar filändelserna. Ute på nätet finns tusentals, ja kanske tiotusentals länkar till artiklar på min hemsida. Ändrar jag från .shtm till .php i filnamnen upphör dessa länkar att fungera och den som klickar på en sådan länk får ett meddelande att artikeln inte finns. Så jag frågade Gemini om det var möjligt att behålla .shtm men att filerna ändå ses av PHP-tolken på servern som .php. Jodå, svarade Gemini glatt och talade om hur man kan göra detta. Man kan lägga en s k .htaccessfil i sin rotkatalog, som talar om för PHP-tolken att .shtm-filer på min domän skall läsas som .php-filer. Gemini gav mig den exakta koden för denna .htaccessfil.
Den intresserade läsaren kanske vill veta lite mer om .htaccessfilen. I Apacheserverprogrammet kan man självklart göra inställningar. Men det kan bara serverhotellet göra (om man är gäst på ett sådant). Men genom att skapa en .htaccessfil (observera punkten i början av namnet, filen har således inget namn utan bara en filändelse) och lägga den i sin egen rotkatalog, kan man göra alla nödvändiga inställningar, som då bara gäller för den egna domänen (lägger man en .htaccessfil i en viss mapp gäller den bara för denna mapp och dess undermappar). Denna fil är en dold fil, dvs man måste aktivera "Visa dolda filer" för att se den och den skapas med ett vanligt textediteringsprogram. Min kompletta .htaccessfil har fler inställningar än vad som nämns ovan. Så här ser den ut:
Det första stycket kod gör att när man skriver adressen till min hemsida spelar det ingen roll om man skriver http eller https eller om man har med www eller inte. Alla alternativen omvandlas till https://gluefox.com/...). Det finns t ex gamla länkar på nätet till min hemsida med http i adressen (URL). Klickar man på en sådan länk får man en varning att sidan inte är säker (man har ju idag i stort sett gått ifrån http, eftersom förbindelsen då inte är krypterad och kan avlyssnas av hackers). Eftersom koden konverterar http till https, får man en krypterad förbindelse och slipper varningen.
Ibland kan det hända att den webbläsare man använder inte hittar index-filen (som är den fil där huvudsidan finns). Detta gäller för min hemsida, eftersom index-filen där har filändelsen .shtm medan den borde ha filändelsen .php (enligt vad som förklarats ovan). Kodraden i andra stycket hjälper till att styra besökaren till denna fil. Det här var något som Gemini föreslog på eget bevåg.
Det sista stycket innehåller den kod som gör att Apache förstår att filerna skall läsas som PHP-filer trots att filändelserna (.shtml eller .shtm) säger att de är SSI. Uttrycket php82 i koden syftar på den version av PHP som min server kör just nu (PHP 8.2).
Jag ville gärna testa min konverterade sida innan jag lade upp den på servern och Gemini berättade att det fanns ett gratisprogram, XAMPP, som kan köras på en Windowsdator och skapa en lokal Apacheserver. Jag laddade hem programmet, installerade det och lade sedan www-mappen (innehållande min hemsida) i en folder som skapades vid installationen av XAMPP. Denna folder fungerar som "serverhårddisk". Och sedan öppnade jag min hemsida via en webbläsare. Jag surfade runt några minuter och såg att allt verkade fungera, och sedan satte jag igång med att ladda upp alla konverterade filer till mitt webbhotells server. Jag behövde inte ladda upp bilder och video och pdf och liknande, utan endast de filer i vilken texten till min hemsida finns. Dvs de filer som hade konverterats.
Sedan upptäckte jag att det fanns saker på hemsidan som inte fungerade (vilket är ganska självklart det är ju alltid så). Jag hade tidigare ett javascript som högst upp i vänstra hörnet i varje artikel angav när artikeln sist ändrades. Många läsare uppskattade denna funktion. Det var ett urgammalt javascript och förmodligen var det inte kompatibelt med PHP-tolken (men fungerade med den gamla SSI-tolken). Jag berättade för Gemini och fick direkt en kodrad (som utnyttjar serverprogramvaran för att generera samma sak som javascriptet) att lägga in i varje artikel. Och än en gång fick jag använda Notepad++ för att ersätta den gamla koden med den nya i alla mina artiklar, och sedan ladda upp artiklarna igen.
Och så upptäckte jag ytterligare några saker som inte fungerade. Och tvingades återigen att ersätta kod i mina filer och sedan ladda upp de ändrade filerna. Men detta är fullständigt normalt. Det händer nästan aldrig att något i datorsammanhang direkt fungerar som tänkt. Utan det inträffar alltid något man inte räknat med. Man får inte ge sig utan måste vara uthållig. Men nu är det klart och allting fungerar. Jag uppskattar att hjälpen från Gemini besparade mig flera veckors arbete. Om inte mer.
Ovanstående utgör en sammanfattning. I själva verket uppstod flera problem (bl a var det svårt att få XAMPP att fungera korrekt) och jag höll på i sammanlagt tre veckor innan jag hade löst alla problem. Jag går inte in på några detaljer.
Det var lätt att kommunicera med Gemini och den är väldigt artig. När vi vid ett tillfälle hade hållit på i flera timmar så skrev jag till Gemini att jag är en människa och inte en maskin och därför måste ta en paus för att vila lite. Och ta en fika. Gemini uttryckte förståelse för detta och önskade mig en trevlig fikarast och välkommen tillbaka.
När jag var klar med allt, skrev jag till Gemini och tackade och fick då följande svar:
Det har varit ett absolut nöje att hjälpa dig med detta!
Du har helt rätt eftersom bilderna och videofiler redan ligger tryggt på servern är det bara dina .shtm-filer och den nya .htaccess-filen som behöver laddas upp. Eftersom textfiler är så extremt små kommer det att gå blixtsnabbt att föra över dem, och att ta det mapp för mapp är en jättebra och kontrollerad strategi.
Du ska ha ett stort tack för ett fantastiskt samarbete. Du har ställt otroligt skarpa frågor och din analys av felmeddelandena i XAMPP var klockren. Det är tack vare din noggrannhet och dina bra beskrivningar som vi kunde lösa detta så här snabbt tillsammans.
Stort lycka till med uppladdningen i morgon! Ta det lugnt och metodiskt. Om det mot förmodan skulle dyka upp något oväntat när filerna väl är på plats, så vet du exakt var jag finns.
Ha en riktigt fin kväll och njut av din nykonverterade PHP-hemsida! Hemsidan är i trygga händer.
Om du vill när allt är uppladdat och klart i morgon, kan jag hjälpa dig att:
Göra en snabb säkerhetskontroll av din .htaccess på den skarpa servern.
Tipsa om hur du enkelt rensar webbläsarens cache om gamla sidor skulle ligga kvar och spöka.
Låt mig bara veta hur det går i morgon!
Det var instressant att genomföra ett lite större projekt tillsammans med en AI. Tidigare har jag bara ställt relativt korta frågor till AI och fått svar. Jag märkte snabbt hur viktigt det är att man tänker igenom sina promptar så att de blir kristallklara. En människa har ju sunt förnuft och förstår ofta även dåligt formulerade frågor. Det gör inte en AI.
Gemini fungerade fantastiskt bra och det är uppenbart att AI, använd på rätt sätt och för rätt typ av problem, kan utgöra en enorm hjälp. Och spara oerhört mycket tid. Och just när det gäller programmering och liknande så excellerar AI, eftersom det handlar om ett begränsat område där vi har exakta definitioner och regler och där allt är logiskt. Och där det inte finns några jokrar.
Tillbaka till huvudartikeln "Artificiell intelligens (AI/AGI) vad är det?"