Techniek

Meertaligheid alom

Meertaligheid in een website. Een lastig punt. Tenminste, als je CMS dat nog niet ondersteund. Hier liepen we vorig jaar ook tegenaan. We hadden het al op de planning staan en vroegen onze klanten er ook om.

Een kort onderzoek leerde dat in de Django wereld al diverse pogingen gedaan zijn om meertaligheid te realiseren. Op de DjangoCon Europe 2011 in Amsterdam zei een spreker (Jonas Obrist) ook heel mooi: ik heb X ontwikkeld, maar dat moet je niet meer gebruiken. Vervolgens heb ik met Y een volgende poging gedaan, maar dat moet je niet gebruiken. Ik ben nu met poging 3 bezig om een vertalingen op een fatsoenlijke manier te bouwen, en hopelijk wordt dat wat. Het tekende de complexiteit.

Helaas bleek in 2013 dat ook deze poging (nu genaamd django-hvad) niet toepasbaar was in bestaande systemen. Dat heeft ons er toe gezet om zelf met de ervaringen van onze voorgangers iets nieuws te realiseren. Heel simpel beginnen, en vooral geen complexe technieken gebruiken die integratie konden dwarsbomen. Dit bleek een succes!

Het zou alleen bedoeld zijn voor ons CMS, maar het bleek veel breder inzetbaar te zijn. Inmiddels is dit uitgegroeid tot een eigen Open Source project, django-parler, en wordt dat op diverse plekken gebruikt.

Zo ook voor onze klanten:

En hun reactie? Ze zijn enthousiast! "1 CMS waarin je een overzicht hebt alle talen. Dat heeft Cola-Cola niet eens", aldus Tjebbe Tjebbes van WakaWaka. "Ik heb toen onderzoek gedaan, en zij hebben per land een andere website, en een ander systeem". Als we willen, kunnen we zo een site voor een nieuwe taal realiseren!

Technisch geneuzel, e-mail overzetten

Hoe zet je email over van 1 Gmail account naar een andere? Dat lijkt een onmogelijke opgave. Toch is het best goed te doen, alleen moet je het even weten:

De eindgebruiker versie

  • Je activeert bij Gmail de optie voor IMAP.
  • Je voegt beide e-mail accounts toe aan een ouderwetse desktop email client. (bijvoorbeeld Mozilla Thunderbird)
  • Je sleept de inhoud per map naar de andere account.

Wel nu, wat doe je als je veel mappen hebt, en meerdere accounts wilt samenvoegen?

De techneuten versie

Er is ook een tooltje, die dat heel slim aanpakt. Het kan zelfs vertalingen omzetten (Bijvoorbeeld "Trash" wat in de andere account "Prullenbak" heet). Het kost even wat uitzoekwerk, maar als techneut kun je daar toch wat mee. Hierbij het commando om de email over te zetten van een Nederlandse naar Engelse GMail account:

imapsync --host1 imap.gmail.com --host2 imap.gmail.com --port1 993 --port2 993 --ssl1 --ssl2 --user1 EMAIL1 --user2 EMAIL2 --password1 PASS1 --password2 PASS2  --exclude 'Gmail' --regextrans2 's/Verzonden berichten$/Sent Mail/g' --regextrans2 's/Prullenbak$/Trash/' --regextrans2 's/Concepten$/Drafts/g' --exclude='\[Gmail\]$' --exclude 'Alle berichten' --exclude 'Belangrijk' --exclude 'Met ster'

sim-pel. Nouja, bijna dan. :-)
Deze tool heeft ons in ieder geval een hoop tijd bespaart!

Goede backups

Backups, misschien wel het meest gehekelde punt in de IT. Dat roept ook een paar vragen op:

  • Is er een backup?
  • Kan je de backup terugzetten?
  • Hoe maak je die backup?

Vraag 2 lijkt een beetje gek om te stellen, maar sta er maar bij stil: als je niets kunt terugzetten, wat heb je dan? Een hoop willekeurige data. Maar geen backup.

Gelukkig bestaan hiervoor een paar handige oplossingen, die ook verschillende zaken kunnen backuppen. De database moet immers los een backup hebben, en alle bestanden van de website ook. Ons doel is simpel:

  • Databases voor iedere dag in de week kunnen terugzetten.
  • De gehele server compleet iedere dag backuppen.
  • Losse bestanden makkelijk uit een backup kunnen halen.

De gehele server zeg je? Ja. Als Apple ons 1 ding geleerd heeft met TimeMachine, is het wel dat je maar beter alles kunt backuppen, in plaats van een beetje. Je weet maar nooit waarvoor je het nodig hebt. Dankzij rsnapshot kan dit ook efficient; zo zijn van iedere dag wijzigingen van de server opgeslagen.

Afsluitend voor de techneuten onder ons, zijn er een paar zaken waar je je in kunt verdiepen: rsyncrsnapshotrdiff-backupduplicity, automysqlbackup en autopostgresqlbackup. Mocht je nog andere oplossingen kennen, dan horen we dat graag!

Django sprint in Utrecht

Er was een Django sprint in Utrecht. Hier waren we ook bij! Wat gebeurt er op zo'n sprint? Techneuten gaan samenwerken om allerlei vervelende bugs op te lossen in het framework waar ze allemaal graag mee werken: Django.

En wat levert dat op? Dat de nieuwe versie van Django het makkelijker maakt om websites te bouwen. Het was een leuke dag, en een mooie manier om kennis te maken met andere programmeurs! Volgende keer weer?

Techniek hoek: handige tip voor git

Uit de techniek hoek, een manier om beter te werken met Git. Wat is Git? De manier waarop programmeurs wijzigingen bijhouden aan software, en ook samen in teams kunnen werken aan 1 onderdeel.

Onze tip is heel simpel:

Bij het binnenhalen van veranderingen van de server kun je voor 2 manieren kiezen: merge of rebase. Standaard is een pull hetzelfde als fetch + merge. Als je in de log kijkt, zie je een halve "DNA-helix" aan commits ontstaan. Ofwel, chaos!

(om in de log te kijken, gebruik het commando: git log --graph --decorate --all).

In plaats daarvan, kun je voor rebase kiezen.

  • Bij de meeste software (bijvoorbeeld SourceTree) is dit een vinkje in het pull scherm.
  • Op de command line gebruik je: git pull --rebase.

Om hiervan een alias te maken (git up), gebruik je het volgende commando:
git config --global alias.up 'pull --rebase --stat'.

Een rebase zet de comments uit jouw branch weer bovenop de oude reeks van origin/branch.
Je krijgt dan 1 mooie lijn per branch.

Probeer maar ;-)