angle-uparrow-clockwisearrow-counterclockwisearrow-down-uparrow-leftatcalendarcard-listchatcheckenvelopefolderhouseinfo-circlepencilpeoplepersonperson-fillperson-plusphoneplusquestion-circlesearchtagtrashx

Over

11 augustus 2019

Deze website is een meertalig CMS / Blog dat ik bouw met Python, de framework Flask en SQLAlchemy. Het wordt ingezet op mijn ISPConfig3 (Nginx + Mariadb) server met behulp van Docker die ook wordt gebruikt voor de ontwikkeling. De website beschikt over user registratie, veel beheerdersfuncties, privacy en veiligheid, dus dit is geen klein project. Enkele 'highlights':

Tech

  • Python 3 (3.7)
  • Flask
  • SQLAlchemy
  • Mariadb
  • Docker, docker-compose
  • Bootstrap4
  • Fontawesome
  • Tinymce
  • ISPConfig3

Inzet

Stappen zijn ontwikkeling, staging en productie, allemaal met behulp van docker en docker-compose. De ontwikkeling maakt gebruik van de Flask ontwikkelingsserver, staging en de productie maakt gebruik van de Gunicorn server. Tot slot, ISPConfig3 wordt gebruikt om het domein, de database en SMTP e-mail, Nignx is geconfigureerd als een reverse proxy.

Privacy

Verwacht hier geen oplossingen zoals het gebruik van CDNs, Google Analytics, Facebook plugins, enz. Privacy is een van de belangrijkste dingen in het leven. Hoewel het onmogelijk is om het volgen van ons te voorkomen en onze waardevolle privégegevens te verzamelen, ben ik van mening dat we ons allemaal moeten inspannen om dit tot een minimum te beperken.

Beveiliging

Beveiliging is altijd een werk in uitvoering. Het begint met het ontwerp voor de beveiliging, wat ook betekent dat je veel moeite moet doen om dingen te loggen. Er zijn geweldige tools zoals OWASP ZAP en online diensten zoals securityheaders.com en detectify.com die u kunnen helpen bij het identificeren van kwetsbaarheden.

Meertalige

Terwijl de tekst van deze website in het Engels is geschreven, ondersteunt het meerdere talen met behulp van de Flask-Babel extensie. De teksten in de andere talen worden momenteel machinaal vertaald met behulp van de DeepL API en zijn soms verre van perfect, maar u kunt de messages.po -bestanden altijd bewerken.

Machinaal leren

Kunstmatige intelligentie (AI) dringt op vele manieren ons leven binnen. Python is de taal die gebruikt wordt bij machinaal leren en deep learning. Persoonlijk houd ik niet van deze ontwikkelingen omdat niemand aansprakelijk kan worden gesteld voor de genomen beslissingen. Maar AI kan ons ook op goede manieren helpen, zoals het aanbevelen van andere nieuwsberichten aan het eind van een nieuwsbericht.

Meer: Kivy

Was ook op zoek naar een Python GUI. Begon met tkinter maar vond al snel dat dit veel beperkingen had voor mijn doel. Ik kwam Kivy tegen en ging er een eerste app mee bouwen. Je kunt ook een Kivy app inzetten op Android, maar willen we het Android ecosysteem ondersteunen? Zal ook over mijn Kivy project berichten.

Wat is het volgende?

De komende maanden zal ik proberen een aantal dingen te documenteren die ik heb gedaan om dit te laten werken, zoals het gebruik van SQLAlchemy zonder Flask-SQLAlchemy, het vermijden van slecht onderhouden Flask uitbreidingen, migraties met behulp van Alembic, het minimaliseren van de grootte van een Docker image, docker-compose configuraties.

Bedankt, Peter

Laat een reactie achter

Reageer anoniem of log in om commentaar te geven.

Opmerkingen (4)

Laat een antwoord achter

Antwoord anoniem of log in om te antwoorden.

avatar

Hallo Peter,
Super dat je zoveel kennis deelt op je site, goed leesbaar en je kan er wat van leren! IK volg i.p.v. Kivi https://beeware.org/. Wel een complexe setup en tot nu toe nog weinig ontwikkelingen voor het web, meer voor APPS.
Groet,
Marcel

avatar
peter 3 jaar geleden Anonieme bezoeker (niet ingelogd)

Hallo Marcel,
Nog bedankt voor je bericht. Beeware ziet er ook goed uit. Ben even gestopt met Kivy i.v.m. tijdgebrek. Was wel een leuk project om Flask op mijn OnePlus One met Ubuntu Touch te laten werken. Groeten, Peter

avatar

рукеру56гвекрнвек56ргевнк6

avatar

Muchas gracias por el blog, pero tienes publicado el código del blog?