De gulden snede

Wat is de gulden snede?
De gulden snede is een stukje eeuwenoude raadselachtige wiskunde. De gulden snede of ‘Divina Proportia’ (goddelijke proportie) kort men af met de Griekse letter Φ (spreek uit: ‘Fie’).
Het getal geeft een speciale verhouding van lijnstukken aan: stel dat je twee lijnen hebt van lengte a en b, dan voldoen deze aan de gulden snede als de gezamenlijke lengte van de lijnen zich verhoudt tot a op dezelfde manier dat a zich verhoudt tot b.
Met andere woorden: als a+b/a gelijk is aan a/b, dan is de uitkomst van die breuk precies de gouden snede. De verhouding geeft de gulden snede haar engelse naam: The Golden Ratio.
De Griekse wijsgeer Euclides beschreef als eerste het getal Φ, maar men gebruikte de gulden snede waarschijnlijk al eerder. De oude Egyptenaren bouwden hun piramides op basis van de gulden snede. Ook in het Parthenon, een tempel ter ere van de godin Athena, kun je Φ terugvinden.
Φ is ook op andere plaatsen te ontdekken: bijvoorbeeld in de verhouding tussen de lengte van het middelste botje in je vinger tot het langste botje en het kortste botje. Ook in het hartslagpatroon – zichtbaar gemaakt op een ECG – is tussen de hartslagen de verhouding van Φ terug te vinden. In de vroege middeleeuwen bedacht Fibonacci het antwoord op de vraag waarom deze verhouding zo vaak terug te vinden is.
De eenvoudigste constructie van de gulden snede gaat als volgt (zie afbeelding):
Teken een rechthoekige driehoek ABC met de rechthoekszijden AB van lengte 1 en BC van lengte 2. De hypotenusa AC heeft dan de lengte 5.Cirkel vanuit A het punt B om naar het punt D op de hypotenusa.Cirkel vanuit C het punt D om naar het punt E op BC. Nu is
EC=DC=5−1,
zodat
BE=2−(5−1)=3−5.
Daaruit volgt:
BE×BC=6−25=EC2;.
dus:
BEEC=ECBC,
met andere woorden: de zijde BC is verdeeld volgens de gulden snede.
De gulden snede in kunst en natuur
Het eindige en het oneindige
In de esoterie geldt dat de gulden snede de wiskundige formulering is voor het omzetten van het oneindige in het eindige en omgekeerd. De wetmatigheden rond de gulden snede zien we terug in de geschiedenis en in onze persoonlijke ontwikkeling.
Pentagram en de gulden snede
Wanneer we de hoekpunten van een regelmatige vijfhoek met elkaar verbinden, ontstaat het pentagram, de vijfpuntige ster. De vijf verbindingslijnen snijden elkaar volgens de gulden snede.
Zaadbed van zonnebloemen
De spiraalstructuur van het zaadbed van zonnebloemen is op het gouden getal gebaseerd.
Johann Sebastian Bach
In de klassieke muziek kom je de gulden snede ook regelmatig tegen. Met name in de Mattheüs Passion, in klaviercomposities en andere muziekstukken van Johann Sebastian Bach blijkt het expressieve hoogtepunt vaak, qua aantal maten, op het snijpunt van de gulden snede te liggen.
Piet Mondriaan
De gulden snede in de schilderkunst wordt gebruikt om diepte en de verdeling in ruimtelijke vlakken aan te geven. De horizon bijvoorbeeld wordt vaak bepaald met F. Het effect is schoonheid, harmonie en balans. Onze Piet Mondriaan (1872-1944) maakte er graag gebruik van. Hij is de schepper van de Victory Boogie Woogie waarin hij 'dynamische beweging in evenwicht' probeert uit te drukken.
Le Corbusier
De architect Le Corbusier, pseudoniem van Charles Edouard Jeanneret, (1887 -1965), ontwierp de beroemde Notre-Dame-du-Haut van Ronchamps (tegen de Zwitserse grens). Hij let op de natuur en ziet de eenheid van vorm, zuivere silhouetten, eenheid en verscheidenheid in de secundaire elementen, alles is een geheel. Rond 1946 introduceert hij Le Modulor, een verhoudingssysteem dat op menselijke maten is gebaseerd. Met zijn rode en blauwe schaal in dit systeem herstelt hij de gulden snede weer in ere.
Hier het perfecte voorbeeld van de gulden snede is het schilderij van de Mona Lisa.

De gulden snede

Wat is de gulden snede?
De gulden snede is een stukje eeuwenoude raadselachtige wiskunde. De gulden snede of ‘Divina Proportia’ (goddelijke proportie) kort men af met de Griekse letter Φ (spreek uit: ‘Fie’).
Het getal geeft een speciale verhouding van lijnstukken aan: stel dat je twee lijnen hebt van lengte a en b, dan voldoen deze aan de gulden snede als de gezamenlijke lengte van de lijnen zich verhoudt tot a op dezelfde manier dat a zich verhoudt tot b.
Met andere woorden: als a+b/a gelijk is aan a/b, dan is de uitkomst van die breuk precies de gouden snede. De verhouding geeft de gulden snede haar engelse naam: The Golden Ratio.
De Griekse wijsgeer Euclides beschreef als eerste het getal Φ, maar men gebruikte de gulden snede waarschijnlijk al eerder. De oude Egyptenaren bouwden hun piramides op basis van de gulden snede. Ook in het Parthenon, een tempel ter ere van de godin Athena, kun je Φ terugvinden.
Φ is ook op andere plaatsen te ontdekken: bijvoorbeeld in de verhouding tussen de lengte van het middelste botje in je vinger tot het langste botje en het kortste botje. Ook in het hartslagpatroon – zichtbaar gemaakt op een ECG – is tussen de hartslagen de verhouding van Φ terug te vinden. In de vroege middeleeuwen bedacht Fibonacci het antwoord op de vraag waarom deze verhouding zo vaak terug te vinden is.
De eenvoudigste constructie van de gulden snede gaat als volgt (zie afbeelding):
Teken een rechthoekige driehoek ABC met de rechthoekszijden AB van lengte 1 en BC van lengte 2. De hypotenusa AC heeft dan de lengte 5.Cirkel vanuit A het punt B om naar het punt D op de hypotenusa.Cirkel vanuit C het punt D om naar het punt E op BC. Nu is
EC=DC=5−1,
zodat
BE=2−(5−1)=3−5.
Daaruit volgt:
BE×BC=6−25=EC2;.
dus:
BEEC=ECBC,
met andere woorden: de zijde BC is verdeeld volgens de gulden snede.
De gulden snede in kunst en natuur
Het eindige en het oneindige
In de esoterie geldt dat de gulden snede de wiskundige formulering is voor het omzetten van het oneindige in het eindige en omgekeerd. De wetmatigheden rond de gulden snede zien we terug in de geschiedenis en in onze persoonlijke ontwikkeling.
Pentagram en de gulden snede
Wanneer we de hoekpunten van een regelmatige vijfhoek met elkaar verbinden, ontstaat het pentagram, de vijfpuntige ster. De vijf verbindingslijnen snijden elkaar volgens de gulden snede.
Zaadbed van zonnebloemen
De spiraalstructuur van het zaadbed van zonnebloemen is op het gouden getal gebaseerd.
Johann Sebastian Bach
In de klassieke muziek kom je de gulden snede ook regelmatig tegen. Met name in de Mattheüs Passion, in klaviercomposities en andere muziekstukken van Johann Sebastian Bach blijkt het expressieve hoogtepunt vaak, qua aantal maten, op het snijpunt van de gulden snede te liggen.
Piet Mondriaan
De gulden snede in de schilderkunst wordt gebruikt om diepte en de verdeling in ruimtelijke vlakken aan te geven. De horizon bijvoorbeeld wordt vaak bepaald met F. Het effect is schoonheid, harmonie en balans. Onze Piet Mondriaan (1872-1944) maakte er graag gebruik van. Hij is de schepper van de Victory Boogie Woogie waarin hij 'dynamische beweging in evenwicht' probeert uit te drukken.
Le Corbusier
De architect Le Corbusier, pseudoniem van Charles Edouard Jeanneret, (1887 -1965), ontwierp de beroemde Notre-Dame-du-Haut van Ronchamps (tegen de Zwitserse grens). Hij let op de natuur en ziet de eenheid van vorm, zuivere silhouetten, eenheid en verscheidenheid in de secundaire elementen, alles is een geheel. Rond 1946 introduceert hij Le Modulor, een verhoudingssysteem dat op menselijke maten is gebaseerd. Met zijn rode en blauwe schaal in dit systeem herstelt hij de gulden snede weer in ere.
Hier het perfecte voorbeeld van de gulden snede is het schilderij van de Mona Lisa. 

De gulden snede

Wat is de gulden snede?
De gulden snede is een stukje eeuwenoude raadselachtige wiskunde. De gulden snede of ‘Divina Proportia’ (goddelijke proportie) kort men af met de Griekse letter Φ (spreek uit: ‘Fie’).
Het getal geeft een speciale verhouding van lijnstukken aan: stel dat je twee lijnen hebt van lengte a en b, dan voldoen deze aan de gulden snede als de gezamenlijke lengte van de lijnen zich verhoudt tot a op dezelfde manier dat a zich verhoudt tot b.
Met andere woorden: als a+b/a gelijk is aan a/b, dan is de uitkomst van die breuk precies de gouden snede. De verhouding geeft de gulden snede haar engelse naam: The Golden Ratio.
De Griekse wijsgeer Euclides beschreef als eerste het getal Φ, maar men gebruikte de gulden snede waarschijnlijk al eerder. De oude Egyptenaren bouwden hun piramides op basis van de gulden snede. Ook in het Parthenon, een tempel ter ere van de godin Athena, kun je Φ terugvinden.
Φ is ook op andere plaatsen te ontdekken: bijvoorbeeld in de verhouding tussen de lengte van het middelste botje in je vinger tot het langste botje en het kortste botje. Ook in het hartslagpatroon – zichtbaar gemaakt op een ECG – is tussen de hartslagen de verhouding van Φ terug te vinden. In de vroege middeleeuwen bedacht Fibonacci het antwoord op de vraag waarom deze verhouding zo vaak terug te vinden is.
De eenvoudigste constructie van de gulden snede gaat als volgt (zie afbeelding):
Teken een rechthoekige driehoek ABC met de rechthoekszijden AB van lengte 1 en BC van lengte 2. De hypotenusa AC heeft dan de lengte 5.Cirkel vanuit A het punt B om naar het punt D op de hypotenusa.Cirkel vanuit C het punt D om naar het punt E op BC. Nu is
EC=DC=5−1,
zodat
BE=2−(5−1)=3−5.
Daaruit volgt:
BE×BC=6−25=EC2;.
dus:
BEEC=ECBC,
met andere woorden: de zijde BC is verdeeld volgens de gulden snede.
De gulden snede in kunst en natuur
Het eindige en het oneindige
In de esoterie geldt dat de gulden snede de wiskundige formulering is voor het omzetten van het oneindige in het eindige en omgekeerd. De wetmatigheden rond de gulden snede zien we terug in de geschiedenis en in onze persoonlijke ontwikkeling.
Pentagram en de gulden snede
Wanneer we de hoekpunten van een regelmatige vijfhoek met elkaar verbinden, ontstaat het pentagram, de vijfpuntige ster. De vijf verbindingslijnen snijden elkaar volgens de gulden snede.
Zaadbed van zonnebloemen
De spiraalstructuur van het zaadbed van zonnebloemen is op het gouden getal gebaseerd.
Johann Sebastian Bach
In de klassieke muziek kom je de gulden snede ook regelmatig tegen. Met name in de Mattheüs Passion, in klaviercomposities en andere muziekstukken van Johann Sebastian Bach blijkt het expressieve hoogtepunt vaak, qua aantal maten, op het snijpunt van de gulden snede te liggen.
Piet Mondriaan
De gulden snede in de schilderkunst wordt gebruikt om diepte en de verdeling in ruimtelijke vlakken aan te geven. De horizon bijvoorbeeld wordt vaak bepaald met F. Het effect is schoonheid, harmonie en balans. Onze Piet Mondriaan (1872-1944) maakte er graag gebruik van. Hij is de schepper van de Victory Boogie Woogie waarin hij 'dynamische beweging in evenwicht' probeert uit te drukken.
Le Corbusier
De architect Le Corbusier, pseudoniem van Charles Edouard Jeanneret, (1887 -1965), ontwierp de beroemde Notre-Dame-du-Haut van Ronchamps (tegen de Zwitserse grens). Hij let op de natuur en ziet de eenheid van vorm, zuivere silhouetten, eenheid en verscheidenheid in de secundaire elementen, alles is een geheel. Rond 1946 introduceert hij Le Modulor, een verhoudingssysteem dat op menselijke maten is gebaseerd. Met zijn rode en blauwe schaal in dit systeem herstelt hij de gulden snede weer in ere.
Hier het perfecte voorbeeld van de gulden snede is het schilderij van de Mona Lisa. 

Glamping

Glamping de nieuwe rage!
WAT IS GLAMPING EIGELIJK?
Glamping, ofwel glamorous camping, staat voor het comfort van een hotel gecombineerd met de natuurlijke omgeving en de vrijheid van een camping. Tijdens je glamping vakantie verblijf je in een compleet ingerichte luxe tent of een bijzondere accommodatie. Op deze manier kampeer je geheel in stijl, voorzien van alle moderne gemakken.
WIST JE DAT…
De glamping-trend is komen overwaaien uit Zuid-Afrika? Begin vorige eeuw reisden rijke ontdekkingsreizigers uit Amerika en Europa af naar Afrika om onderzoek te doen naar bijzondere diersoorten. Zij waren maanden van huis en sliepen toen al in luxe safari-tenten, waarmee zij de luxe en comfort van thuis niet hoefden te missen.
WAAROM GLAMPING?
Denk jij bij kamperen ook gelijk aan lekke luchtbedden en koken op een gasstelletje? Dat kan tegenwoordig ook anders! Als je gaat glamperen dan staan kwaliteit, luxe en comfort voorop! Je slaapt in een comfortabel bed, zet een vers kopje Nespresso koffie en kunt barbecueën als een professional op de Outdoorchef barbecue. Huur je een safari tent met eigen sanitair? Dan hoef je zelfs niet meer met je wc-rol of handdoek over de camping naar het toiletgebouw te lopen. Dat is dus écht glamour camping!
WAT MOET JE MEENEMEN?
Je kleding, tandenborstel en goede humeur… dat is alles!
VIJF REDENEN OM TE GAAN GLAMPEREN
Je hoeft alleen je kleding en tandenborstel in te pakken. Geen dagen werk meer om de auto in te pakken en er op locatie achter te komen dat je de helft vergeten bent…
Je kunt de caravan thuislaten, waardoor je de Route du Soleil met een glimlach tegemoet kunt zien! Je bent een stuk sneller op locatie.
Nooit meer midden in de nacht wakker worden op de grond, omdat je luchtbed lek is… je slaapt namelijk in een comfortabel bed van 90 x 200 cm met een echte matras.
Je parkeert je auto, pakt je spullen uit en klaar is Kees.
Tilley France bied glaming aan in een unieke Tipi tent overnachting. Je zal verstelt staan van de mooie structuur en de functionaliteit van een echte Tipi tent.
 Via deze LINK vind je meer info over onze Tipi B&B mogelijkheden en prijzen!

Summary of the week from 10.07.2017

True Iron Bloggers:

Adedayo Adeniyi (@daydah) in {‘Decades’: ‘Chunks of Time’} :
David Opati Aswani (@susumunyu) :
Christine Graf (@christinegraf) :
David M.Wampamba (@idesignwebs) :
Dick Olsson (@dickolsson) :
Isa Schulz (@murgeys) :
Harry Tilley (@tilleyharry) in Harry Tilley’s Blog :
Harry Tilley (@tilleyharry) in Tilley France Blog :

The lazy ones:

Cash register:

this week: 10 €
total: 105 €
payed: 0 €
spend: 0 €

Debts:

  • David Opati Aswani (@susumunyu) -25€ or 5 good deeds
  • Manfred Gosch (@1aolivenoel) – 10 € or 2 good deeds (on hold/holidays)
  • Hagen Graf (@hagengraf) – 15 € or 3 good deeds
  • Lena Roohnikan (@lerooco) – 10 € or 2 good deed
  • Christine Graf (@christinegraf) – 5 € or 1 good deed
  • Harry Tilley (@tilleyharry) – 5 € or 1 good deed
  • Adedayo Adeniyi (@daydah) –   minus 5 € because of good deeds

Iron blogger break (can come back for free until 31.07.2017)

  • Manfred Gosch (since 19.06.2017)

Previously retired (all debts paid – can come back for free):

  • Juergen Rinck (since 26.06.2016)
  • Daniel Roohnikan (since 17.04.2017)

Previously retired (must pay 30 € for the re-entry):

  • Joeri Poesen (@jpoesen)  (since 10.07.2017)
  • David M.Wampamba (since 03.04.2017)
  • Osbert Mwijukye (since 03.04.2017)
  • Moein Rezaei (since 26.06.2017)
  • Jonathan Rukundo (since 13.03.2017)
  • Shedy Serem (since 16.01.2017)

 

100s meet at Luwero district, in Uganda to attend a cocktail of workshops ?

In month of May a group of young adults planned a social community activity in Luwero district in Uganda. Luwero district, is one of the districts located in the central part of Uganda, the biggest part of Luwero is rural despite the district being the place of safety during the war, that paved way for the National Resistance Movement on their way into power to govern the country since 1986 to date.

Whoever attended would had access to several workshops including but not limited to  beat-boxing, Rapping, Bboy dance and technology for free of cost before taking part in several Hip-hop Breakdance battles.

I was also able to attend and take part because such are the days I get a chance to expand the awareness of technology among people in the rural parts of my country.

IMG_20170527_143436
David getting closer to listen to a participant’s question.

Observed challenges

  • Luckily some of the participants had smartphones though the biggest number of them were wondering how computers look like. Actually 70% of the young people of the rural areas seems to have missed the biggest opportunity to change the world through the technology simply due to accessibility. As much as the reason  to lack of access many blame it to poor financial standards and corrupt leaders.
  • The lack of communicating comfortably in the official language (English ) of Uganda, leaves one questioning the quality of education the rural people acquire at school. I believe this is contributing a lot to lack of self-esteem among most young Ugandans.

Take a ways

  • To be honest the energy in the room, noticed from the number of participants no matter the age in each single workshop boosted my will to continue participating in such workshops.
IMG_20170527_131508
Ugandan rapper, St. Nelly Sade coaching takes children through a music workshop focusing on Rapping.
  • The questions asked are a significant symbol of desire and commitment to learn regardless accessibility.

My thoughts

  • I believe sooner than later, the technology skill and knowledge divide in Uganda will soon be overcome especially if leaders and parents get involved.
  • As much as the government claims to put in place inclusive systems, the impact is yet to be felt. More effort should be put in especially to combat corruption which is a major hindrance to accessibility of many services today.
  • Should put final touches to the training guide we are developing to allow us increase our attendance more people in rural communities as we teach them about technology and participate in life change.

 

 

Parsing NGINX error logs with PHP

nginx php fpm

I needed a way to fetch and parse various system logs, including the NGINX access and error logs.

Here’s an example log entry that I needed to parse into an array:

2017/07/16 10:35:16 [error] 1365#1365: *5 FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, 
unexpected '$autoloader' (T_VARIABLE) in /var/www/path/to/project/index.php on line 14" while 
reading response header from upstream, client: 192.168.33.1, server: example.dev, request: "GET / HTTP/1.1", 
upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "example.dev"

A quick way to start parsing NGINX error logs with PHP is by using kassner/log-parser.

While I could have used a big one-off regular expression, I like using this parsing library: it has a clean interface and is extensible enough to reuse on different log formats.

1. Use composer to fetch kassner/log-parser:

composer require kassner/log-parser:~1.0

2. Instantiate a parser:

$parser = new \Kassner\LogParser\LogParser();

3. Tell the parser which log file format to expect.

This is where it gets tricky. This particular parser is based on pre-defined regular-expression patterns, and contains a number of patterns / format strings you can use to define the log format.

The parser assumes the standard Apache access log format by default but that won’t work for NGINX error logs. Its documentation does mention the format to use to parse NGINX access logs, but doesn’t mention how to parse NGINX error logs.

The solution:

  • add additional named regex patterns
  • use the additional patterns to build up the format used in NGINX error logs

4. Define new named patterns.

Have a look at the example error log entry at the top of this article. It consists of a number of elements, each of which needs to be defined and targeted with an individual regular expression.

I’ve chosen to prefix the pattern placeholder names with ‘%NGX’ to be sure their names won’t clash with the pre-defined patterns. You’re free to name the placeholders (‘%NGXDT’) and their corresponding regex patterns (‘‘) however you want.

$parser->addPattern('%NGXDT', '(?P<datetime>[\d+/ :]+)');
$parser->addPattern('%NGXLVL', '\[(?P<errorlevel>.+)\]');
$parser->addPattern('%NGXPID', '(?P<processid>\d+(?=\#))');
$parser->addPattern('%NGXTID', '(?P<threadid>(?<=\#)\d+)');
$parser->addPattern('%NGXCID', '(?P<connectionid>(?<=\:\s\*)\d+)');
$parser->addPattern('%NGXMSG', '(?P<message>.+)');
$parser->addPattern('%NGXCL', '(?P<client>.+)');
$parser->addPattern('%NGXSRV', '(?P<server>.+)');
$parser->addPattern('%NGXREQ', '(?P<request>.+)');
$parser->addPattern('%NGXUPS', '(?P<upstream>.+)');
$parser->addPattern('%NGXHST', '(?P<host>.+)');

5. Build up the NGINX error log format using the new named patterns:

 $parser->setFormat('%NGXDT %NGXLVL %NGXPID\#%NGXTID: \*%NGXCID %NGXMSG, client: %NGXCL, server: %NGXSRV, request: "%NGXREQ", upstream: "%NGXUPS", host: "%NGXHST"');

NOTE: pay particular attention to whitespaces and special characters. Notice that the asterisk and pound sign are escaped with a backslash!

6. Fetch, loop through the log file, and parse each line:

$entries = [];
$lines = file('/var/log/nginx/error.log', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
    $entries[] = $parser->parse($line);
}

If all went well, the $entries array should look like this:

Array
(
    [0] => stdClass Object
        (
            [datetime] => 2017/07/16 10:35:16
            [errorlevel] => error
            [processid] => 1365
            [threadid] => 1365
            [connectionid] => 5
            [message] => FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected '$autoloader' (T_VARIABLE) in /var/www/path/to/project/www/index.php on line 14" while reading response header from upstream
            [client] => 192.168.33.1
            [server] => example.dev
            [request] => GET / HTTP/1.1
            [upstream] => fastcgi://unix:/run/php/php7.0-fpm.sock:
            [host] => example.dev
        )

Success!

Conclusion

Unless you find a tool that is able to parse all the log formats you’re interested in, you’ll need to come up with one or more regular expressions to parse and process your log lines.
Kassner/log-parser makes this process easier by allowing you to break down what would otherwise be a hug regex into smaller regex patterns, one for each element in your log line.

Once defined, you can reuse your patterns across different projects. Never reinvent the wheel again.

Parsing NGINX error logs with PHP

nginx php fpm

I needed a way to fetch and parse various system logs, including the NGINX access and error logs.

Here’s an example log entry that I needed to parse into an array:

2017/07/16 10:35:16 [error] 1365#1365: *5 FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, 
unexpected '$autoloader' (T_VARIABLE) in /var/www/path/to/project/index.php on line 14" while 
reading response header from upstream, client: 192.168.33.1, server: example.dev, request: "GET / HTTP/1.1", 
upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "example.dev"

A quick way to start parsing NGINX error logs with PHP is by using kassner/log-parser.

While I could have used a big one-off regular expression, I like using this parsing library: it has a clean interface and is extensible enough to reuse on different log formats.

1. Use composer to fetch kassner/log-parser:

composer require kassner/log-parser:~1.0

2. Instantiate a parser:

$parser = new \Kassner\LogParser\LogParser();

3. Tell the parser which log file format to expect.

This is where it gets tricky. This particular parser is based on pre-defined regular-expression patterns, and contains a number of patterns / format strings you can use to define the log format.

The parser assumes the standard Apache access log format by default but that won’t work for NGINX error logs. Its documentation does mention the format to use to parse NGINX access logs, but doesn’t mention how to parse NGINX error logs.

The solution:

  • add additional named regex patterns
  • use the additional patterns to build up the format used in NGINX error logs

4. Define new named patterns.

Have a look at the example error log entry at the top of this article. It consists of a number of elements, each of which needs to be defined and targeted with an individual regular expression.

I’ve chosen to prefix the pattern placeholder names with ‘%NGX’ to be sure their names won’t clash with the pre-defined patterns. You’re free to name the placeholders (‘%NGXDT’) and their corresponding regex patterns (‘‘) however you want.

$parser->addPattern('%NGXDT', '(?P<datetime>[\d+/ :]+)');
$parser->addPattern('%NGXLVL', '\[(?P<errorlevel>.+)\]');
$parser->addPattern('%NGXPID', '(?P<processid>\d+(?=\#))');
$parser->addPattern('%NGXTID', '(?P<threadid>(?<=\#)\d+)');
$parser->addPattern('%NGXCID', '(?P<connectionid>(?<=\:\s\*)\d+)');
$parser->addPattern('%NGXMSG', '(?P<message>.+)');
$parser->addPattern('%NGXCL', '(?P<client>.+)');
$parser->addPattern('%NGXSRV', '(?P<server>.+)');
$parser->addPattern('%NGXREQ', '(?P<request>.+)');
$parser->addPattern('%NGXUPS', '(?P<upstream>.+)');
$parser->addPattern('%NGXHST', '(?P<host>.+)');

5. Build up the NGINX error log format using the new named patterns:

 $parser->setFormat('%NGXDT %NGXLVL %NGXPID\#%NGXTID: \*%NGXCID %NGXMSG, client: %NGXCL, server: %NGXSRV, request: "%NGXREQ", upstream: "%NGXUPS", host: "%NGXHST"');

NOTE: pay particular attention to whitespaces and special characters. Notice that the asterisk and pound sign are escaped with a backslash!

6. Fetch, loop through the log file, and parse each line:

$entries = [];
$lines = file('/var/log/nginx/error.log', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
    $entries[] = $parser->parse($line);
}

If all went well, the $entries array should look like this:

Array
(
    [0] => stdClass Object
        (
            [datetime] => 2017/07/16 10:35:16
            [errorlevel] => error
            [processid] => 1365
            [threadid] => 1365
            [connectionid] => 5
            [message] => FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected '$autoloader' (T_VARIABLE) in /var/www/path/to/project/www/index.php on line 14" while reading response header from upstream
            [client] => 192.168.33.1
            [server] => example.dev
            [request] => GET / HTTP/1.1
            [upstream] => fastcgi://unix:/run/php/php7.0-fpm.sock:
            [host] => example.dev
        )

Success!

Conclusion

Unless you find a tool that is able to parse all the log formats you’re interested in, you’ll need to come up with one or more regular expressions to parse and process your log lines.
Kassner/log-parser makes this process easier by allowing you to break down what would otherwise be a hug regex into smaller regex patterns, one for each element in your log line.

Once defined, you can reuse your patterns across different projects. Never reinvent the wheel again.

Education: 7Up

Jaden presenting with his classmates
In a country where the education system is in shambles, the educational options available to parents, especially those of us that are in the middle class and still run on tight budgets, are not many.
There is the option of hiring private tutors for your children, to teach them extra lessons after school. Another is to look for an affordable private school, and trust your wards to their high-priced hands.

With the rise of child molestation, the first option is not too attractive, as we run the risk of exposing our children to predators. The second option is only viable if you can afford it, because the cost is not limited to tuition - there's extra curricular activities to pay for, and other levies like books and materials.
But when your child is still under the age of five, the private tutor option is not even an option. I fall under this category. I had my son with me for longer than most, as he was over a year old before he got introduced into the school system. Before he started going to creche, he was confident in speech, he could call 'Dada', and 'Mimi'. We 'introduced' him to Sesame street episode downloads early, and Tom and Jerry and the likes.
But fast forward two years in a private school, Jaden can barely talk. My once happy child is reclusive, and only expresses himself through actions e.g. if he's thirsty, he goes to look for his bottle and forces it into your hands, or if he is hungry, he goes to get his school lunch bag and gives it to you. He is impatient, and he plays with himself.
Of course I was worried. I was worried sick. Each time I observed other kids at the same age of three, even less, I saw the difference. They could express themselves. They could tell you if they wanted to wee wee, or poo poo. I have to keep watching Jaden for physical cues for these simple things.
Yes, everyone kept saying it would take some time, every child is different and each has his/her own pace etc, but these statements did not ease my worries.

Now I know different. I recently had a medical emergency and had to be in Lagos for an extended period. Of course I took him with me, mostly for my peace of mind. After a few days, I decided to enroll him in a nearby school, till we had to return to base.
1. If you, the mother, feel something is just not right about your child, please do not ignore those instincts, regardless of age. Jaden blossomed at this temp school tremendously. Within a week he was more expressive, looks at you the second you call him, and plays more. Within the past month, he has been less prone to anger tantrums, he sings rhymes all the time, says hello and hi, even greets good morning, or welcome. He eagerly looks forward to doing his homework, or to going to school. At the old school, whenever I was the one to drop him off, he would clutch my hand tighter as we got close to his class. Here, he wont even look back, he runs to his class the second he gets into the building. The changes are amazing to watch. The first time he called me 'mummy' I was in tears. He became more confident in using his left hand, something that I had to keep emphasizing at the other school, because he would come home and even smack himself for using the left.

2. Never judge a book by its cover. Never judge a school by its trappings or the amount of school fees you are paying. The temp school is not big, its in a residential area, its even a preschool, yet they were able to perform wonders for my child. Attending their end of session program yesterday also opened my eyes to the fact that its a general thing: all the parents were happy at the progress in their kids. I saw a lot of activities and was duly impressed by other parents testimonies.

3. I would rather take my child to a small preschool, with great results, than to a big school with no positive change in the said child. In Jaden's current school at our base, their approach is not too good. The teachers and caregivers just say, "Jaden does not talk". They did not put any efforts to helping the child develop that aspect, even after I expressed my concerns more than once. At this temp school, I just had to share my concerns at the initial stage, and they took charge. They did not stand on the fact that the child was not talking, but went about trying to find ways to help him talk. The results were showing within a week.
At the other school, after exams, we usually got an envelope of his exam sheets, and they were always blank. Of course the usual excuse is the child did not take the exam because he could not speak yet. Here, I got the envelope, but with so many different assessment sections, I was all smiles. They use the Montessori methodology, so they assess the overall wellbeing of the child, not just academics. Even academics, the exams were realistic: identify numbers, shapes, letters, while the teacher ticks the ones identified correctly. From the overall assessment, I could even see that the instructors knew Jaden well, and did not generalize.

We have a soft drink in Nigeria, called 7Up. Its green and tastes nice. The drink had a slogan some years back, I am not sure its still in use:
7Up.....the difference is clear
The difference is clear as regards Jaden. I am happy God brought about the circumstances for me to have been able to see the difference.

Education: 7Up

Jaden presenting with his classmates
In a country where the education system is in shambles, the educational options available to parents, especially those of us that are in the middle class and still run on tight budgets, are not many.
There is the option of hiring private tutors for your children, to teach them extra lessons after school. Another is to look for an affordable private school, and trust your wards to their high-priced hands.

With the rise of child molestation, the first option is not too attractive, as we run the risk of exposing our children to predators. The second option is only viable if you can afford it, because the cost is not limited to tuition - there's extra curricular activities to pay for, and other levies like books and materials.
But when your child is still under the age of five, the private tutor option is not even an option. I fall under this category. I had my son with me for longer than most, as he was over a year old before he got introduced into the school system. Before he started going to creche, he was confident in speech, he could call 'Dada', and 'Mimi'. We 'introduced' him to Sesame street episode downloads early, and Tom and Jerry and the likes.
But fast forward two years in a private school, Jaden can barely talk. My once happy child is reclusive, and only expresses himself through actions e.g. if he's thirsty, he goes to look for his bottle and forces it into your hands, or if he is hungry, he goes to get his school lunch bag and gives it to you. He is impatient, and he plays with himself.
Of course I was worried. I was worried sick. Each time I observed other kids at the same age of three, even less, I saw the difference. They could express themselves. They could tell you if they wanted to wee wee, or poo poo. I have to keep watching Jaden for physical cues for these simple things.
Yes, everyone kept saying it would take some time, every child is different and each has his/her own pace etc, but these statements did not ease my worries.

Now I know different. I recently had a medical emergency and had to be in Lagos for an extended period. Of course I took him with me, mostly for my peace of mind. After a few days, I decided to enroll him in a nearby school, till we had to return to base.
1. If you, the mother, feel something is just not right about your child, please do not ignore those instincts, regardless of age. Jaden blossomed at this temp school tremendously. Within a week he was more expressive, looks at you the second you call him, and plays more. Within the past month, he has been less prone to anger tantrums, he sings rhymes all the time, says hello and hi, even greets good morning, or welcome. He eagerly looks forward to doing his homework, or to going to school. At the old school, whenever I was the one to drop him off, he would clutch my hand tighter as we got close to his class. Here, he wont even look back, he runs to his class the second he gets into the building. The changes are amazing to watch. The first time he called me 'mummy' I was in tears. He became more confident in using his left hand, something that I had to keep emphasizing at the other school, because he would come home and even smack himself for using the left.

2. Never judge a book by its cover. Never judge a school by its trappings or the amount of school fees you are paying. The temp school is not big, its in a residential area, its even a preschool, yet they were able to perform wonders for my child. Attending their end of session program yesterday also opened my eyes to the fact that its a general thing: all the parents were happy at the progress in their kids. I saw a lot of activities and was duly impressed by other parents testimonies.

3. I would rather take my child to a small preschool, with great results, than to a big school with no positive change in the said child. In Jaden's current school at our base, their approach is not too good. The teachers and caregivers just say, "Jaden does not talk". They did not put any efforts to helping the child develop that aspect, even after I expressed my concerns more than once. At this temp school, I just had to share my concerns at the initial stage, and they took charge. They did not stand on the fact that the child was not talking, but went about trying to find ways to help him talk. The results were showing within a week.
At the other school, after exams, we usually got an envelope of his exam sheets, and they were always blank. Of course the usual excuse is the child did not take the exam because he could not speak yet. Here, I got the envelope, but with so many different assessment sections, I was all smiles. They use the Montessori methodology, so they assess the overall wellbeing of the child, not just academics. Even academics, the exams were realistic: identify numbers, shapes, letters, while the teacher ticks the ones identified correctly. From the overall assessment, I could even see that the instructors knew Jaden well, and did not generalize.

We have a soft drink in Nigeria, called 7Up. Its green and tastes nice. The drink had a slogan some years back, I am not sure its still in use:
7Up.....the difference is clear
The difference is clear as regards Jaden. I am happy God brought about the circumstances for me to have been able to see the difference.