Kurset fandt sted på ErhvervsAkademiet Lillebælts campus. Siden kurset var for alle, både danske og internationale studerende, blev det afholdt på engelsk, hvilket kan ses i videorne herunder. Jeg har dog oversat den smule noter jeg har lagt op til videoerne her på siden til dansk.
Kursets formål er at give nybegyndere i webpublicering mulighed for at oprette et websted og kende lidt til hvorfor og hvordan når det kommer til design, sikkerhed osv.
Jeg optog lektionen, så deltagerne kan gennemgå det senere.
Lektion 4
Den fjerde lektion begyndte med at jeg samlede op på emnet link building, som en deltager spurgte til i sidste lektion.
Derefter talte jeg om hvorfor det giver mening at forbinde sin (WordPress) hjemmeside med diverse sociale netværk og gennemgik de mest betydningsfulde for det Nordeuropæiske marked.
Lektionen blev sluttet af med at vi gennemgik nogle installation og opsætning af nogle af de mest essentielle plugins jeg havde nævnt i sidste lektion.
Kurset fandt sted på ErhvervsAkademiet Lillebælts campus. Siden kurset var for alle, både danske og internationale studerende, blev det afholdt på engelsk, hvilket kan ses i videorne herunder. Jeg har dog oversat den smule noter jeg har lagt op til videoerne her på siden til dansk.
Kursets formål er at give nybegyndere i webpublicering mulighed for at oprette et websted og kende lidt til hvorfor og hvordan når det kommer til design, sikkerhed osv.
Jeg optog lektionen, så deltagerne kan gennemgå det senere.
Lektion 3
Den tredje lektion begyndte med at jeg samlede op på emnet widgets fra sidst.
Derefter gennemgik jeg lidt af hvad plugins kan gøre for en WP side, og hvorfor de er en essentiel del af oplevelsen. Detet blev illustreret med eksempler på nogle gode plugins og hvor man kan finde dem.
Lektionen blev sluttet af med en kort introduktion til emnet SEO (Search Engine Optimization) illustreret gennem det mest populære plugin til hjælp til formålet, Yoast.
Kilder jeg nævnte under lektionen:
Essentielle plugins
Akismet er et anti-spam plugin der er en selvfølge for de fleste, når de sætter en ny WP op, og reelt nødvendig hvis man tillader kommenaterer på ens side
Contant Form 7. Der er mange kontakt-formular plugins, men CF7 er med rette blandt de mest populære da det tilbyder en del indstillings muligheder men stadig er ret overskueligt
Jetpack er en “schweizerkniv” der føjer alle de features til der er på WordPress.com konti. Det er lavet af det samme udviklerhold som WordPress, og medens nogen synes det er tungt kan det reelt erstatte en vifte af løse plugins, og i disse øjne er det ret let. Det kræver dog at man har en gratis wordpress.com konto, og enkelte funktioner koster abonnement.
qTranslate-X er et plugin der lader en køre en WordPress med flere sprog – se f.eks. denne side. Der er flere småfejl i dette plugin, men de fleste andre løsninger er enten mere kluntede eller koster penge så derfor valgte jeg alligevel at fremhæve det.
bbPress lader en køre et fuldblods forum som del under ens WordPress. Ikke kun til hobby men bliver også brugt til support/kunde fora og lignende rundtomkring.
Disable Comments er til hvis du til gengæld slet ikke vil lade folk kommentere på den side eller kunne se at muligheden nogensinde har været der, da det fjerner kommentarfunktionen helt fra siden hvor man med de normale indstillinger blot lukker ned for den.
Mailchimp for WP. MailChimp er et af de mest populære mailing-liste systemer, og dette plugins lader dig integrere det med din WP så du kan forbinde dem og styre ting fra ét sted.
My Calendar. Der er en række kalender plugins til WP, der lader en oprette begivenheder og vise dem i en kalender. Dette er et af de bedre med mange features som widget, kategorier osv.
iThemes Security, godt nok bliver WP opdateret jævntligt og sikkerhedshuller lukket hurtigt, men man kan altid stramme yderligere op omkring sikkerhed. Der er en lang række plugins der hjælper med dette, og iThemes er et af de bedste. Jeg kommer mere ind på sikkerhed i femte lektion.
WordFence er endnu et rigtig godt grænsende til essentielt sikkerhedsplugin. En af dets nævneværdige features er at det let viser hvor dine besøgende og især angreb kommer fra, så du let kan blokere hele lande eller områder fra adgang til siden så de aldrig vil kunne komme til at forsøge at hacke den.
EWWW Image Optimizer er endnu et plugin, som jeg bruger på de fleste af mine sider. Dette er fordi hjemmesider helst skal blive vist hurtigt, men folk elsker samtidig billeder på deres sider, og billeder tager plads og dermed load-tid. EWWW hjælper med at mindste størrelsen på dine billeder uden at det kan ses.
WP Super Cache er endnu en måde at få ens WP til at loade hurtigere på, da den genererer en statisk cache af siden, der hentes hurtigere end hvis alt indhold skulle hentes fra databasen hver gang. Minusset er så at ændringer ikke nødvendigvis vil blive set at besøgende med det samme. Lavet af samme folk som WordPress selv.
W3 Total Cache er et endnu et cache plugin, der har nogle flere indstillings-muligheder men til gengæld også markant også kompleksitet og behov for forståelse da man hurtigt kan ødelægge ens side for brugerne.
Google Analytics er et godt værktøj til at så statistik om besøgende på ens hjemmeside, og dette plugin gør det let at integrere servicen.
Yoast SEO er det nok mest populære SEO plugin til WP. Det hjælper dig med at optimere både den side og den måde du skriver indlæg på så søgemaskiner lettere finder den – og opfatter den som værende positiv og seriøs.
All in One SEO Pack er en anden af de mest populære SEO løsninger og et fint alternativ til Yoast.
Kurset fandt sted på ErhvervsAkademiet Lillebælts campus. Omkring 100 studerende og undervisere deltog. Siden kurset var for alle, både danske og internationale studerende, blev det afholdt på engelsk, hvilket kan ses i videorne herunder. Jeg har dog oversat den smule noter jeg har lagt op til videoerne her på siden til dansk.
Kursets formål er at give nybegyndere i webpublicering mulighed for at oprette et websted og kende lidt til hvorfor og hvordan når det kommer til design, sikkerhed osv.
Jeg optog lektionen, så deltagerne kan gennemgå det senere.
Lektion 2
Den anden lektion tog over hvor lektion et slap og begyndte med at løse det “problem” der var med at få WordPress til at køre lokalt i første lektion.
Siden jeg havde en eksamen lige op til starten på lektionen havde jeg på forhånd optaget en video, hvori jeg behandlede ovenstående, så jeg havde lidt ekstra tid at løbe på. Dette er den første video herunder.
Derefter var jeg så til stede ved holdet, hvor jeg meget kort introducerede kimen til nogle tanker om farver, fonte og anden design teori. Der blev sluttet af med hvor man finder gode, virus-fri temaer til WordPress. Dette er den anden video.
Jeg fandt et andet program til at optage med, så jeg både kunne optage skærmen og så have video af mig i picture-in-picture. Jeg er rigtig glad for denne måde at gøre det på, da man bedre kan se hvad der gøres på skærmen men stadig se forelæseren – det havde været min oprindelige plan for lektion et også men mit daværende program ville ikke mere, men nu det virker vil resten af lektionerne bliver også optaget på denne måde.
Kurset fandt sted på ErhvervsAkademiet Lillebælts campus. Omkring 100 studerende og undervisere deltog. Siden kurset var for alle, både danske og internationale studerende, blev det afholdt på engelsk, hvilket kan ses i videorne herunder. Jeg har dog oversat den smule noter jeg har lagt op til videoerne her på siden til dansk.
Kursets formål er at give nybegyndere i webpublicering mulighed for at oprette et websted og kende lidt til hvorfor og hvordan når det kommer til design, sikkerhed osv.
Jeg optog lektionen, så deltagerne kan gennemgå det senere.
Lektion 1
Den første lektion var fokuseret på baggrunden for brugen af et CMS, i dette tilfælde WordPress, og få webstedet til at køre på en lokal computer.
Vi stødte ind i et problem undervejs med at få den lokale databaseforbindelse etableret, men jeg planlægger at begynde lektion to med at løse dette problem.
Siden lektionen var to timer splittede jeg optagelsen i to.
Her i efteråret 2016 underviste jeg et kort forløb om grundlæggende JavaScript på pba i webudvikling. Med kun fem undervisnings gange tildelt var ideen ikke at de studerende skulle blive mestre i JavaScript men kun blive introduceret til sproget og nogle af de forskellige biblioteker der udvider det.
Siden det var en international klasse var undervisningen på engelsk, og derfor er slideshowene ligeså.
I femte og sidste lektion kiggede vi på AJAX og REST i jQuery, opsummerede og kiggede på nogle sjove eksempler på brug af JavaScript på hjemmesider.
Her i efteråret 2016 underviste jeg et kort forløb om grundlæggende JavaScript på pba i webudvikling. Med kun fem undervisnings gange tildelt var ideen ikke at de studerende skulle blive mestre i JavaScript men kun blive introduceret til sproget og nogle af de forskellige biblioteker der udvider det.
Siden det var en international klasse var undervisningen på engelsk, og derfor er slideshowene ligeså.
I fjerde lektion kiggede vi på dynamisk HTML og jQuery, jQuery begivenheder og effekter
Her i efteråret 2016 underviste jeg et kort forløb om grundlæggende JavaScript på pba i webudvikling. Med kun fem undervisnings gange tildelt var ideen ikke at de studerende skulle blive mestre i JavaScript men kun blive introduceret til sproget og nogle af de forskellige biblioteker der udvider det.
Siden det var en international klasse var undervisningen på engelsk, og derfor er slideshowene ligeså.
I tredje lektion kiggede vi på DOM, JavaScript frameworks og jQuery funktioner og selectors.
Her i efteråret 2016 underviste jeg et kort forløb om grundlæggende JavaScript på pba i webudvikling. Med kun fem undervisnings gange tildelt var ideen ikke at de studerende skulle blive mestre i JavaScript men kun blive introduceret til sproget og nogle af de forskellige biblioteker der udvider det.
Siden det var en international klasse var undervisningen på engelsk, og derfor er slideshowene ligeså.
I anden lektioner gennemgås data typer, variabler, loops, funktioner og objekter.
Her i efteråret 2016 underviste jeg et kort forløb om grundlæggende JavaScript på pba i webudvikling. Med kun fem undervisnings gange tildelt var ideen ikke at de studerende skulle blive mestre i JavaScript men kun blive introduceret til sproget og nogle af de forskellige biblioteker der udvider det.
Siden det var en international klasse var undervisningen på engelsk, og derfor er slideshowene ligeså.
I første lektion genopfrisker jeg HTML og CSS hurtigt og introducerer JavaScript.
Den moderne database har rødder tilbage i 1960erne takket være bl.a. IBM. I 1970 udgav Edgar “Ted” Codd, der også var ansat ved IBM, en artikel der beskriver en relationel database1. Han lagde senere navn til en af normal-formerne2. IBM var dog langsomme til at implementere den relationelle database, og lavede således det ikke-relationelle sprog SEQUEL, der var så godt at det allerede inden udgivelse blev kopieret og brugt i Oracle Database3 af Larry Ellison4 og navnet blev skiftet til SQL.
SQL blev en ANSI standard i 1986 og ISO i 1987, og selv om der i dag findes mange mere eller mindre proprietære implementeringer er det grundlæggende sprog universelt mellem mange database systemer.
SQL
Langt de fleste relational database management systemer (RDMS), som er hvad de fleste forbinder med betegnelsen database, bruger sproget SQL (structured query language) til at behandle og manipulere data.
I SQL er tabeller og forespørgsels-resultater lister over rækker: den samme række kan forekomme flere gange, og rækkefølgen af rækker kan anvendes i forespørgsler (f.eks. ved LIMIT).
SQL er opdelt i flere elementer:
Klausuler (clauses), der er konstituerende bestanddele af erklæringer og forespørgsler – i nogle tilfælde valgfri.
Udtryk (expressions), der kan producere enten skalar værdier, eller tabeller, der består af kolonner og rækker af data.
Prædikater (predicates), der angiver betingelser, der kan evalueres til SQL tre-værdi logik (3VL) (sandt / falsk / ukendt)5 eller Boolske værdier6, som anvendes til at begrænse virkningerne af erklæringer og forespørgsler, eller til at ændre programmets flow.
Forespørgsler (queries), henter og sender data baseret på specifikke kriterier. Dette kan betegnes som essensen af SQL.
Udsagn (statements), som kan have en vedvarende effekt på skemaer (schema, samling af database objekter, typisk tabeller) og data, eller som kan kontrollere transaktioner, programmets flow, forbindelser, sessioner, eller diagnostik.
SQL-sætninger benytter semikolon (“;”) terminatoren. Selv om det ikke kræves på alle platforme, det er defineret som en standard del af SQL-grammatik.
Ubetydelige mellemrum er generelt ignoreret i SQL-sætninger og forespørgsler, hvilket gør det let at formatere SQL kode læsbart.
Queries
Eksempel på en simpel SELECT fra tabellen sound.
I SQL anvendes queries til SELECT, INSERT, UPDATE og DELETE data fra en database. Længden af en query kan variere efter hvor mange tabeller man arbejder med.
I SQL er der mange reserverede ord, flere af dem kan ikke anvendes som tabel navne f.eks. kan man ikke kalde en tabel for “table”, “drop” eller “delete”. Reserverede ord er typisk angivet med blå tekst i en query og det vil være en fordel at undgå disse reserverede ord som tabel- og kolonne navne.
Man kan kombinere informationer fra flere tabeller ved hjælp af Join.
SELECT statement med brug af JOIN hvor de to tabeller kombineres hvis WHERE klausulen er opfyldt.Indsættelse af informationer i tabellen Answers
Joins
Visuel representation af SQL Joins
I SQL bruges JOIN til at sætte en eller flere tabeller sammen i et resultat sæt. Der findes forskellige slags joins, der sætter tabellerne sammen på forskellige måder.
Inner join kombinere to tabeller og tilslutter dem sammen baseret på kolonnerne i tabellen. Ved brug af inner join angiver man hvilke kolonner man ønsker at sætte sammen og under hvilken tilstand (condition). INNER delen i INNER JOIN er valgfrit i de fleste database systemer, da inner joins er standard, fordi det er det meste benyttede. Det vil sige man kan nøjes med at bruge JOIN som kommando 7.
Ved inner join sættes alle værdier, der passer sammen, sammen, men ved Outer join kombineres alle værdier, uanset om de passer sammen eller ej.
Den mest grundlæggende form for join er et Cross join, fordi der ikke bruges ON til at sammensætte tabellerne. I stedet for bliver alle rækker fra tabellen der er nævnt i join’et inkluderet i resultat sættet. 8.
Første række i tabel1 kombineres med alle rækker i tabel2, derefter anden række i tabel1, og sådan fortsættes der gennem alle rækker i tabel1.
Left join og Right join fungerer grundlæggende ligesom Inner join, men ved Left join returneres alle rækker fra venstre tabel og de matchende rækker fra højre tabel. Omvendt ved Right Join, hvor denne returnere alle rækker fra højre tabel og de matchende rækker fra venstre tabel. 9.
Normalformer
Normalisering, brug af normal-former, er systematisk opsætning af data i en database og beskriver afhængighederne og relationerne indholdet imellem.
Ved at normalisere fjerner vi overflødig data og sikrer at der kun er relateret data i en tabel, hvilket både sparer plads og gør database-strukturen mere overskuelig. Samtidig kan adgangen til data bedre begrænses da den er delt op i mere specifikke tabeller, hvilket kan øge sikkerheden 10.
Historien bag normalformerne
Edgar F. Codd, der også “opfandt” relationsmodellen, introducerede Den Første Normal Form i 1970 og anden og tredje form i 1971. I 1977 føjede Ronald Fagin en Fjerde og en Femte Normal Form til.
Den nyeste tilføjelse af den Sjette Normal Form fra 2002 af C.J. Date, Hugh Darwen og Nikos Lorentzos
Der er andre former ud over disse, f.eks. den tidligere nævnte Boyce Codd Normal Form.
Første normalform
Den første normalform definere at der ikke må være forskellig data i samme felt, hvilket betyder at informationen deles i tabeller efter relation. Ligeledes fjernes gentagne grupper fra individuelle tabeller, hvor hvert sæt af relateret data har en primær-nøgle.
Anden normalform
Her fjernes den redundante data, således sættes værdisæt, der kan bruges til flere poster, i særskilte tabeller.
Tredje normalform
Det der ikke beskriver primærnøglen fjernes nu eller flyttes til andre tabeller.
Esssensen af de første tre normalformer er altså at dataen i tabellen skal beskrive nøglen.
I web-udvikling plejer man normalt kun at gå op i at opfylde de første tre normal-former, da det er de mest essentielle, og de følgende former leder til strukturer der ikke nødvendigvis er optimale til denne brug. Dette ledte til den klassiske huskeregel inspireret af den amerikanske ed ved domstolene: “The data should depend on the key (1NF), the whole key (2NF) and nothing but the key (3NF) (so help me Codd)”.
Fjerde normalform
Her må en tabel ikke have flere en-til-mange og mange-til-en relationer, der ikke direkte hænger sammen og en værdi må ikke have flere afhængigheder. Dette resulterer i en del ekstra tabeller.
Nøglen hører til et id, hvor navnet på nøglen typisk består af id og tabelnavnet.
For at dokumenter vores database som vi har lavet i forbindelse med vores semesterprojekt, har vi lavet et E/R diagram i MySQL Workbench. Dette er et visuelt værktøj der tillader datamodellering 11. Vores diagram er lavet som et fysisk diagram, der viser tabellernes struktur og deres relationer. Diagrammet repræsenterer nøgler, tabel navne og kolonne navne med dertilhørende data typer. Desuden involveres normaliserings processen (se forrige spalte).
For at optimere vores database laves denne så den følger 3. normalform. Det vil sige at den kun indeholder data, der beskrive primær-nøglen, al data i tabellen omhandler nøglen.
Femte normalform
Alle ikke-trivielle joins skal relatere til primær-nøglen, hvilket betyder at det nogle gange sparer resurser at dele ellers relateret data op. Alle tabeller skal altså kunne bruge * relationer, ellers skal det rykkes ud i ekstra tabeller 12.
Sjette normalform
Den sjette normalform er ret radikal da der ikke må være nogen trivielle join afhængigheder overhovedet. Data deles altså op i flere tabeller hvis den ikke internt relaterer til hinanden.
Den bruges i store datavarehuse og resulterer i rigtig mange tabeller 13, hvoraf de fleste droppes undervejs.
Der er som nævnt i starten af dette afsnit mange flere normal-former, men disse seks er de mest anerkendte.
E/R diagram
Et E/R diagram (entity relationship diagram) er en visuel gengivelse af databasens struktur og hvordan elementerne relaterer til hinanden. Diagrammet illustrerer de forskellige tabeller i databasen, bestående af rækker af kolonner med en dertilhørende primær-nøgle. Primær-nøglen sikrer unik data, da den garanterer at hvert datapunkt har en unik værdi 14, og den indekserer også databasen så den yder bedre.
ER diagrammet viser tabellerne i vores database, hvilke kolonner der er i tabellerne og data typen tilhørende kolonnen.
En tabel i vores diagram er ”Users” og en kolonne i denne tabel er ”Firstname”. Disse kolonner har fået tilføjet forskellige slags data typer. Data typer beskriver hvilke slags data der opbevares. Eksempler på data typer kan være tal, tegn eller datoer. Valg af korrekt datatype sørger for at værdier, der indsættes i databasen, giver mening og det sparer desuden plads (Wilton & Colby, side 18). De tilføjede data typer i vores diagram er ”VARCHAR(45)”, en tekst-streng på maks 45 tegn, ”INT” typen heltal, og ”BOOLEAN” typen true/false.
Diagrammet viser desuden relationen imellem tabellerne. I vores diagram ses flere en-en relationer og en relation bestående af en-mange eller en-en relation. Disse relationer viser hvor mange gange en forekomst (instance) i en tabel kan være forbundet med forekomsten (instance) i en relaterede tabel.
Det er værd at bemærke at idUsers (INT) er den værdi brugeren angiver som brugernavn i app’en, som han får tilsendt per brev fra sygehuset, hvor de andre id værdier er sat somAutoIncrement – at den automatisk sættes ind og øges med 1 for hvert nyt indlæg/række i tabellen.
Den gule nøgle viser at den række er sat til at være Primary Key.
Firkanterne viser forskellige information om de enkelte rækkers status: en hvid firkant viser at den ikke behøves være udfyldt, den blå at den skal være udfyldt (Not Null) og den røde at det er Foreign Keys, en værdi der er en primær-nøgle i en anden tabel.
Litteraturliste
ANSI/ISO/IEC International Standard (IS). Database Language SQL—Part 2: Foundation (SQL/Foundation). 1999