Webshops op snelheid

In ons werkveld heb je kant en klare pakketten, en je hebtbouwpakketten. Soms kun je een webshop makkelijk maken met een klant-en-klaar product, maar voor complexere e-commerce vraagstukken wordt dat alleen maar lastig. Dan is zo'n kant-en-klaar oplossing een blok aan het been.

Daarom maken we graag gebruik van Oscar. Een relatief nieuw software pakket met een aantal voordelen:

  • Het werkt veel sneller dan Magento!
  • Alles is aan te passen aan je wensen
  • Productvariaties en andere uitbreidingen zijn in te passen.
  • Goed te koppelen aan de systemen van leveranciers.

Dit is nu toegepast in de websites van WakaWaka, Solar for Syria en Solar for Philippines.
Daarmee werd het mogelijk om aan de eisen te voldoen, o.a.:

  • Meertaligheid
  • Meerdere valuta
  • Producten op meerdere websites tonen.
  • Orders van alle websites centraal verwerken.
  • Orders automatisch doorsturen naar distributeurs.
  • Verzendkosten op regio en gewicht.
  • Selectie van distributeur op regio.

Ofwel, aanrader om iets mee te doen!

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!

DjangoCon EU 2013

Deze week wordt op DjangoCon Europe 2013 in Warschau gehouden. Er zijn 3 dagen met presentaties gehouden, en daarna 2 dagen samen werken aan het verbeteren van ons geliefde web framework. DjangoCon heeft dit jaar een bijzondere locatie waarop de conferentie plaatsvond:

 

We hebben zelf een korte presentatie gegeven van django-fluent CMS; het CMS wat we gebruiken voor projecten en ook op deze site gebruikt is.

Hier zijn de slides:

Vanaf vandaag is de documentatie van het CMS ook beschikbaar op django-fluent.org!

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 ;-)

LinkedIn en wachtwoorden

LinkedIn was onlangs in het nieuws dat hun wachtwoorden gelekt waren, en makkelijk te kraken zijn. Dit was bijvoorbeeld te lezen op nu.nl. Hoe zit dat precies? Hierbij een uitleg hoe websites met wachtwoorden omgaan, en wat je er zelf aan kan doen.

Wachtwoord versleuteling

De wachtwoorden op LinkedIn zijn versleuteld opgeslagen, de originele wachtwoorden zijn niet bekend. Tot zo ver netjes gedaan!

Door versleuteling wordt een wachtwoord omgezet naar een stuk gecodeerde en onleesbare tekst. Als je wachtwoord bijvoorbeeld "linkedin" was, wordt dit omgezet naar de tekst 7728240c80b6bfd450849405e8500d6d207783b6. Alleen die tekst wordt bijgehouden bij LinkedIn, en het originele wachtwoord niet. Dat is veiliger, want zo kan je wachtwoord niet gelezen worden.

Je vraagt je misschien af, hoe kan je dan een wachtwoord controleren als je niet meer het originele wachtwoord hebt? Dat is eigenlijk vrij simpel: bij het inlogscherm wordt dat ingetypte wachtwoord ook omgezet naar een versleutelde code. Die kan je vergelijken met de code die al bekend was, en zo ja, heb je dus met het juiste wachtwoord ingelogd. Werkelijk nergens is het originele wachtwoord bekend.

Het idee van zo'n versleuteling is ook dat, mocht er een hacker inbreken, hij toch niet de originele wachtwoorden kan achterhalen.

Wat gaat daar fout?

Zo'n versleutelde waarde is erg onleesbaar en erg complex opgebouwd, echter hebben slimme mensen daar een oplossing voor gevonden. Van alle denkbare simpele wachtwoorden is de versleutelde waarde bekend. Iedereen die de code 7728240c80b6bfd450849405e8500d6d207783b6 ziet staan, kan vrij snel achterhalen dat het bijgehorende wachtwoord hiervan gewoon "linkedin" is.

De truc is dat iedere website aan een wachtwoord iets extra's toevoegt, dat niemand verder weet. Als bijvoorbeeld achter dat wachtwoord de tekst '$%QP@' plakt word, is de uitkomst ineens c444a30967aa9631aca65e3b4b89e18c784a3430. Deze waarde is niet bekend, en kan je niet zomaar opzoeken in een tabel. Misschien is dit alsnog wel te kraken, maar het is ineens een behoorlijk stuk lastiger geworden.

(voor de techneuten: zie het begrip Rainbow Tables op Wikipedia)

Wat heeft LinkedIn gedaan?

In een reactie heeft LinkedIn het volgende aangegeven:

  • De huidige wachtwoorden op LinkedIn zijn onschadelijk gemaakt, je moet een nieuw wachtwoord opgeven.
  • Er worden 1 of 2 e-mails gestuurd met toelichting en instructies wat je nu moet doen.
  • De nieuwe wachtwoorden zijn wel voorzien van een salt, zoals hierboven beschreven.

Ofwel, dit wordt heel professioneel aangepakt! Ook worden er geen aanklikbare links in de email verzonden, ter voorkoming van meer narigheid.

Er is namelijk een kans dat hackers van deze situatie gebruik maken. Er kan naar iedereen een valse e-mail gestuurd worden (die er 100% uit kan zien zoals LinkedIn die stuurt) met een link om je wachtwoord te "resetten". In werkelijkheid vul je dan je echte wachtwoord op een website van de hacker zelf, en gaat het van kwaad naar erger.

Mocht je toch een e-mail ontvangen met links, is deze zeer waarschijnlijk vals, en kun je die dan ook zonder twijfel in de prullenbak gooien. Je kunt het beste gewoon www.linkedin.com intypen, en daar je wachtwoord herstellen. Dan weet je zeker dat je op de goede website zit.

Aard van het lek

Het persbericht spreekt van wachtwoorden zijn "gelekt". Dat zijn zachte woorden die veel ruimte voor interpretatie overlaten. Het klinkt alsof iemand wat gelekt heeft, maar het is eerder:

  • Iemand heeft weten in te breken in de database van LinkedIn.
  • De gehele tabel van gebruikersnamen met wachtwoorden is gedownload.
  • Als bewijsstuk zijn de versleutelde waarden publiek gemaakt, zonder gebruikersnaam erbij te vermelden.

Hiermee heeft LinkedIn kunnen bevestigen dat de hack echt is, en geen bedrog of loze kreet.

Iets wat deze hack ons ook leert is dat er op de 161 miljoen LinkedIn gebruikers er maar 6.4 miljoen unieke wachtwoorden zijn. Gemiddeld hebben 25 mensen dus hetzelfde wachtwoord, en vermoedelijk nog meer. Het is dus verstandig een unieker wachtwoord te kiezen!

Vermoedelijk zijn alle e-mailadressen ook buitgemaakt bij de hack, en worden ze nu voor spam gebruikt. Op diverse fora geklaagd dat er sinds 2 weken spam wordt ontvangen op e-mailadressen die alleen bij LinkedIn bekend waren.

Wat kun je doen?

Het beste kun je nu inloggen op LinkedIn, en je wachtwoord wijzigen. Hiermee profiteer je van de nieuwe beveiliging die LinkedIn heeft doorgevoerd.

Mocht je hetzelfde wachtwoord ook op andere websites gebruiken, is het verstandig om ook daar je wachtwoord te wijzigen. Veel mensen gebruiken voor hun Hotmail, LinkedIn, en Facebook hetzelfde wachtwoord. Zeker als je voor alle sites hetzelfde e-mailadres en wachtwoord gebruikt, is het raadzaam dit aan te passen.

Verzin ook een unieker wachtwoord. Je kunt letters uit een zelfverzonnen zin gebruiken, en daar leestekens aan toevoegen. Zo wordt je wachtwoord uniek.

Als programmeur van websites, is het daarnaast ook belangrijk dat je je verdiept in deze materie. Hopelijk heeft dit artikel je ook geholpen!

 

Vragen, opmerkingen, of suggesties? Laat een bericht achter hieronder!

PyCharm presentatie op de Django meeting

Afgelopen woensdag heb ik een korte presentatie gehouden bij de DjangoMeetingNL. Bij de Django meeting kunnen ontwikkelaars en professionals van gedachten wisselen, en kennis uitwisselen.

In de presentatie zijn kort de voordelen van een IDE, zoals PyCharm aangestipt. Het help je met betere code schrijven, sneller fouten vinden, en je leert sneller code van andere modules doorgronden. Het is een wat controversioneel onderwerp met VIM en Emacs gebruikers in de zaal, maar over het algemeen leek de presentatie goed te worden ontvangen!