Webbutvecklingsdagbok - efter studierna
Tjo igen! Efter avslutade studier i min tidigare Webbutvecklingsdagbok samt en recension av distansutbildningen så öppnar jag nu denna Webbutvecklingsdagbok vilket även innebär ett "uppgraderat" användarnamn😎! Jag är numera WebbkodsFrilansaren eller WKF. Med detta sagt så kommer jag fortfarande att lära mig nya saker och ting.
(Ett mycket stort tack till SweClockers för den mycket snabba ändringen efter min förfrågan - faktiskt redan idag på bara någon timme eller två!🤯 Förhoppningsvis är mitt "uppgraderade" användarnamn endast en främmande nyckel och inte något hårdkodat i någon databastabells nycklar som skulle orsaka plötsliga framtida SQL-fel!😁)
Den kommer att täcka följande löpande:
1. Jobb & uppdrag - om mina jobb- & uppdragssök och eventuella pågående jobb och/eller uppdrag.
2. Hobbyprojekt - om mina kodprojekt utanför arbetsplatser och/eller uppdrag.
3. Vidareutbildning - om mina vidareutbildningar på egen hand och/eller via diverse utbildningsinstitutioner.
I och med denna tråd så kommer jag slippa skapa nya trådar om vad jag pysslar med och/eller framtida utbildningar jag går. Allt kan nu samlas i ett och samma "trådramverk(?)"😂.
Jobb & Uppdrag
Jag spekulerade i min tidigare studietråd om att ett bra arbete med en nöjd exjobbgivare skulle eventuellt leda till en framtida uppdragsgivare. Detta har nu inträffat. För någon dag sedan skrev min före detta exjobbgivare - hädanefter hänvisad som uppdragsgivare - på en offert för ett arbete motsvarande 8 arbetsveckor.
Nu på fredag ska vi diskutera och skriva på ett ytterligare avtal som omfattar mer eller mindre exakt vad dessa 8 arbetsveckor ska utgöra i rena webbsidor och all funktionalitet på dessa utifrån diverse underlag som är sekretessbelagt vilket jag därför inte kan gå in på specifikt.
Vad jag kan säga är att det lutar mot att använda PHP, MySQL/MariaDB igen och möjligen en hel del JavaScript för att uppfylla vad som är tänkt att åstadkomma med detta allra första uppdrag från min allra första uppdragsgivare direkt efter studierna! En utmaning är att jag måste förhålla mig inom webbservermiljön som är Loopia då ingen VPS går att/fås använda i dagsläget.
Således har jag funderat på i vilken utsträckning ReactJS skulle kunna användas för att underlätta användningen av de interaktiva bitarna jag måste utveckla eller om klassisk hederlig $_POST kan fixa biffen igen? Det sistnämnda kan innebära en irritation om det blir många POST-anrop och att webbsidan laddas om istället för att enbart innehåll byts ut likt ett SPA. Värt att diskutera med uppdragsgivaren om.
Hobbyprojekt
Under examensarbetet för ett par månader sedan så upptäckte jag att jag upprepade mig en hel del för att ta fram en konsekvent säker webbplats åt min före detta exjobbgivare. Detta ledde mig till att vilja ta fram ett funktionsbaserat PHP-ramverk bara för att det är/vore kul.
Det funktionsbaserade PHP-ramverket (vilket alltså använder sig av nästan bara funktioner istället för klasser där det går, t.ex. SQL-databasanslutningen är ett objekt) kallar jag för Router, Data, Page eller "RDP" för jag tänker mig att det är sekvensen för alla HTTP(S)-anrop: Du anger en URI, eventuella data hämtas, en eventuell webbsida visas.
Flera kontroller kan göras under val av URI (t.ex. behörigheter, sessioner, existerar URI:n ens, eventuella felsidor för vissa URI:s men inte andra, och så vidare), under val av data (behörigheter, sessioner, eventuella felsidor när data saknas eller dölja det pga. säkerhetsskäl, och så vidare), under val av webbsida (behörigheter, sessioner, eventuella felsidor när data saknas eller dölja det pga. säkerhetsskäl eller är den slutgiltiga responsen kanske bara en fil, JSON eller någon annan form av payload?
Jag har fått till dynamiska routes: ['GET/test/{id}' => ['text/html', 'all']] där {id} då kan vara vad som helst och denna sparas även som en parameter om den vill användas vid steget av datainhämtning. Nu filar jag på att få till sessionen och behörigheten vilket är under andra arrayelementet 'all'.
När det står 'all' så innebär det i princip att ingen behörighet och/eller session behövs för att komma åt just denna route. Jag har redan databastabeller och ett par funktioner som kan göra kontroller som att inte bara kontrollera inloggningssessioner utan också så att den som gör förfrågan anropar med en av flera giltiga IP-adresser eller så ignoreras IP-adresskontroll för just den användaren.
Huruvida jag försöker mig på ett simpelt ORM återstå att se. Jag har en saftig funktion som kan ta emot vilken slags SQL Query (CRUD eller om du bara vill göra något så simpelt som att kontrollera SQL-användarens behörighet, alltså inte SELECT, DELETE, INSERT eller UPDATE), sedan parametrar som binds (statement med binded params används) och sedan genomförs anropet och du kan ange hur du vill ha tillbaka dina data om det är SELECT eller om du vill ha tillbaka senast insatt radidentifieringsnummer om det är INSERT.
Det sista steget för varje anrop som är att välja rätt webbsida eller payload att svara med kommer att få en enkel Template Engine med inspiration från Laravel. Jag har hittat en video som visar hur man kan gå tillväga med detta via preg_replace() och så klart kommer jag INTE att använda mig av eval()😱.
En intressant sak i det sista steget är just det här med caching. Beroende på undersida och hur ofta data kanske uppdateras så kan det ju vara önskvärt att ha olika cachingtider för olika slags webbsidor? "Mallmotorn" gör ju sitt anspråk på processorkraft vid varje HTTP(S)-anrop så webbsidor som inte har så mycket sådan syntax i sig är ju inte värda att köra om hela tiden om det istället kan finnas statiska filer för just vissa sådana slags webbsidor.
Om någon har några tips & tricks kring hela hobbyprojektet att utveckla ett cirka 99 % funktionsbaserat PHP-ramverk, så är det bara att svara här vid lust och tillfälle!
Vidareutbildning
Jag håller på att läsa en amerikansk bok om Datornätverk där jag nu läst färdigt kapitlet om Applikationslagret och snart även Transportlagret. Boken går från mjukvarurelaterade lager såsom Applikationslagret och sedan ned till hårdvarurelaterade lager såsom Fysiska lagret.
Detta gör jag för att jag känner att jag är som en elektriker som kan dra kablar i hus men inte har en aning om hur elen kommer från elkraftverken och in i de olika hemmen och hur elen kanske tar olika vägar, störs på vägen till husen, eller andra bra saker att känna till om dess färd till slutdestinationerna.
I mitt fall handlar det om hur nätverkspaket skickas från exempelvis en server och sedan hamnar hos min personliga dator i form av någon payload som ska tolkas (eng. parsing) som exempelvis en HTML-fil i en webbläsare som använder sig av HTTPS-protokollet inom Applikationslagret.
En intressant sak jag läste är att per standard så ska routrar inte bry sig om paketens innehåll utan bara skicka vidare dem utifrån destinationsadress och port. Då tänkte jag, "Men det finns väl inget som säger att vissa routrar skulle kunna 'paketsniffa'?" Och detta faktum besvarar väl kanske varför vissa bolag inte tillåts få utgöra en del av Sveriges kommande nationella nätverk? 🤔
Just nu i kapitlet om Transportlagret läser jag om TCP-protokollet och hur det faktiskt ser ut på paketnivå med alla dess huvuden, och all data som skickas i varje paket. Detta kommer underlätta mig att senare börja sätta mig in - på nybörjarnivå - i Wireshark för att lära mig vad jag kan (och inte kan) göra med webbplatser för att säkra upp dem mot diverse IT-relaterade hot.
På återseende!
Mvh,
WFL (f.d. WKL).
"Den säkraste koden är den som aldrig skrivs"
"Visste du förresten att det är ett mångmiljardbolag?"
"Jag lever inte för att koda utan kodar för att sen kunna leva"