Secure CakePHP Salt and Cipher Seed Generator

Last thursday I was working on a little project and I wanted to create an easy way for people that follow my workshop to implement a strong and secure salt and cipher seed for their instances of CakePHP. Therefore I made a small website that generates the entire code for you, making it just a matter of copying and pasting the code. Go to http://cakephp.thomasv.nl to see it in action.

CakePHP 2.8.x: Storing Sessions in the Database Revisited

Preface

A while back in January 2013, I wrote an article on how to store CakePHP’s sessions in the database, instead of using PHP as the session handler. Recently I received a question if it would be possible to expire (delete) all of a user’s sessions except the current one. It made me look back at the code I wrote in 2013 and I wondered if I could do better than I did before.

Summary

In this article, I cover how to setup CakePHP 2.8.x (the version is important, because of a bug fix that was necessary to make it work!) to use sessions stored in the database. I answer the question if it is possible to delete a user’s old sessions except the current one too. I also include an updated version of my previous attempt of retrieving online users. I placed all the code used on github for easy viewing.

Lees verder CakePHP 2.8.x: Storing Sessions in the Database Revisited

NoSQL-databases

Inleiding

Als we het over databases hebben dan verwijst men vrijwel altijd naar relationele databases. Voor het relationele model in 1970 bedacht werd waren er andere vormen van elektronische databases.

Relationele databases zijn de standaard geworden omdat bij dit model de opbouw en organisatie los staan van de manier van opslag: gegevens worden op een gestandaardiseerde manier opgeslagen buiten de applicatie die de gegevens gebruikt. Dit maakt de databases meer toekomst bestendig omdat de manier waarop de data gebruikt wordt kan veranderen dan waar de data in eerste instantie voor opgeslagen is.

Toch is het relationele model niet overal geschikt voor. Wanneer men met grote hoeveelheden data werkt of gegevens serveert onder hoge druk merkt men al snel op dat relationele databases hier niet in uitblinken, tenzij fors geïnvesteerd wordt in de onderliggende hardware. Maar hardware die 2x zo snel is in theorie schaalt niet 2x zo snel mee in praktijk. De performance van het systeem is niet lineair evenredig met de snelheid van de onderdelen.

In sommige gevallen is een relationele database gewoonweg niet nodig, bijvoorbeeld omdat informatie helemaal geen relatie met iets heeft en dus maar op één manier opgeslagen wordt. Of als er geen complexe queries op de data uitgevoerd hoeven te worden. In weer andere gevallen biedt een relationele database niet genoeg functionaliteit, bijvoorbeeld bij het leggen van een groot aantal verbanden tussen punten.

NoSQL-databases zijn ontwikkeld om in te springen waar SQL niet praktisch is. NoSQL is ten eerste een verwijzing naar SQL, een door IBM ontwikkelde taal voor het werken met gegevens binnen een relationele database. Voorbeelden van database software die zwaar op SQL leunen zijn o.a. MySQL – de meest gebruikte web database -, Microsoft SQL Server, Oracle Database en PostgreSQL.

De No in NoSQL verwijst niet naar geen zoals velen denken maar naar not only. Hiermee wordt bedoeld dat relationele databases niet overal voor geschikt zijn. Er is daardoor ook geen complete definitie van NoSQL-databases omdat er veel verschillende gebieden zijn waar verschillende NoSQL oplossingen uit voortgekomen zijn. Er is echter wel één eigenschap die NoSQL-databases verenigt: ze verschillen op een of meer punten van traditionele relationele databases.

Lees verder NoSQL-databases

[Update] Hoogtekaart in kleur

Een “kleine” update. Na wat fine tuning en een zeer passende methode om kleuren weer te geven in plaats van grijswaarden is hier het volgende resultaat behaald met de hoogtedata van Rotterdam:

Hoogtekaart Rotterdam in kleur

Download hier de kaart op volledige resolutie [22528×9728@72MB]: Hoogtekaart Rotterdam in kleur

Update van 19-03-14

Na wat rondvragen heb ik een voor de hoogte betere verdeling van kleurwaarden gevonden. Enig nadeel is dat deze verdeling ervoor zorgt dat minieme verschillen in hoogte (in termen van kleiner dan halve meters) nu vaak niet meer zichtbaar is. Waar voorheen gewerkt werd met een formule om de RGB waarden aan de hand van de hoogte te berekenen, heb ik deze render laten uitvoeren met een zogenaamde Look Up Table voor de kleurreferenties welke overeenkomt met die van het AHN. Laat maar weten wat jullie er van denken.

Hoogtekaart Rotterdam in Kleur

Download hier de kaart op volledige resolutie [22528×9728@48MB]: Hoogtekaart Rotterdam in kleur volgens AHN

[Update] RD coördinaten omzetten naar WGS84 coördinaten

Het volgende stuk code hieronder leek me wel handig te delen, deels omdat ik het vast nog wel vaker nodig ga hebben maar ook omdat anderen er misschien ook wel baat bij hebben uiteraard. De code is geschreven in python maar elke gangbare programmeertaal zal zich er wel voor lenen om iets vergelijkbaars ervan te maken.

Lees verder [Update] RD coördinaten omzetten naar WGS84 coördinaten

Van algoritme naar afbeelding [Gigapica]

Kaart Rotterdam Hoogtedata klein

Voor de minor die ik volg moest nog maar een stukje voltooid worden om deze af te ronden, namelijk het werken met Hadoop MapReduce om een grote hoeveelheid data (ongeveer 77 miljoen gemeten punten aan hoogtedata) om te zetten naar een betekenisvolle visualisatie.

Zie hierboven het resultaat (statisch, non Google Maps style). Om het resultaat op de juiste resolutie te zien klik je op bovenstaande afbeelding of volg je deze link: Giga Rotterdam. Let wel, de afbeelding is enorm dus laden kan even duren! Mocht het openen in de browser niet lukken, probeer dan de afbeelding te downloaden [rechtermuisknop op link => opslaan als]