• Home
  • About
  • Contact
  • tweets by me

    About me
    • Watching @rowan_m talk about estimations, so far no laptop fails ;) #phpbnl12 #phpnw11 2 hrs ago
    • Second day of #phpbnl12 learned a lot yesterday on Mongo and Security audits. Today will be about Estimation, Traits and Daemons 3 hrs ago
    • Listening to Sijmen Ruwhof talk about security #phpbnl12 22 hrs ago
    • More updates...
  • Recent Posts

    • Outputting formatted XML using PHP
    • SSH Tunneling across multiple hosts in Linux
    • Pre-commit hook in Git: Running PHPUnit
    • Multiple types of opening braces when matching pairs with the tokenizer/ext
    • Introducing: DocBlox
Next Page »

Outputting formatted XML using PHP

Oct 23
Posted on October 23rd, 2011 In category Code  PHP 
By mvriel Tagged as format  PHP  prettify  snippet  xml 

For an interpreter it doesn’t matter how much whitespace there is in an XML document and often you find that machines strip it all out to reduce the amount of bandwidth used. Often at the receiving end you want to show the output in a log file or page and need it to be formatted so that it is easily readable by humans.

(more…)

No Comments »

SSH Tunneling across multiple hosts in Linux

Jun 10
Posted on June 10th, 2011 In category Linux 
By mvriel Tagged as host  jumphost  Linux  multiple  ssh  tunnel  tunneling 

Sometimes you need to communicate with a server (or other device) that is not directly accessible from your own computer. If you can reach this server via another server this is not an issue and can be solved by setting up a SSH Tunnel across your network.

An example

Let’s start with a example:

  • Computer A is where you are working.
  • Server A is accessible by computer A.
  • Server B has a administration web interface but its IP Address is completely shielded by a firewall; except for Server A.

Thus the only way to reach the web interface on Server B from Computer A would be through Server A.

The solution

You can solve this by setting up an SSH Tunnel which spans several server; the command for this is:

ssh -t -t -L[LOCAL_PORT]:localhost:[PORT_ON_A] [USER]@[SERVER_A] 'ssh -L[PORT_ON_A]:localhost:[PORT_ON_B] [USER]@[SERVER_B]'

Basically you are chaining a specific IP port to guide traffic from and to your PC.

The variables shown here represent:

  • LOCAL_PORT, the port on you local PC where you want to connect to in order to communicate with SERVER_B
  • PORT_ON_A, the port on SERVER_A which is used to transfer your data across to SERVER_B (may be any port number but make sure it does not collide with other tunnels / uses)
  • USER, your account name / login name on SERVER_A and/or SERVER_B
  • SERVER_A, the hostname or IP address of your first jump point
  • PORT_ON_B, the destination port to which you want to connect; in our example we wanted to connect to a web interface (port 80) thus we use the value 80 here
  • SERVER_B, the hostname or IP address of your intended destination

You might notice the use of a double -t argument in our command; this is not an error but is actually required in order to create the connection (without it your system might complain that it is unable to acquire a TTY; explaining the details of this would go beyond this blog posting)

Our example command

To complete this exercise I will show you the full command with which we could satisfy the requirement in our opening example:

ssh -t -t -L8081:localhost:10000 mvriel@a.server.example.com 'ssh -L10000:localhost:80 mvriel@b.server.example.com'

See that we used port 8081 as local port? We did that to prevent collisions with services on our local machine. Were you to use (for example) port 80 it might produce unwanted results such as your local apache (if you have one) being unreachable.

Now all we need to do to visit the website on Server B would be to enter the following URL in your browser:

http://localhost:8081

That’s all there is to it. If anything is not clear, just leave a comment.

2 Comments »

Pre-commit hook in Git: Running PHPUnit

May 16
Posted on May 16th, 2011 In category Articles 
By mvriel Tagged as gist  git  hook  PHP  phpunit  pre-commit 

Pre-commit hooks in git are one of those things you hardly think about but can help you automate tasks and do last-minute checks. A good example of this is running unit tests before commits, to make sure nothing broke; or checking your files using PHP_CodeSniffer.

With [DocBlox][1] I use them to run my unit tests as I personally believe these should be ran (and fixed!) before any commit.

(more…)

No Comments »

Multiple types of opening braces when matching pairs with the tokenizer/ext

Feb 24
Posted on February 24th, 2011 In category Articles 
By mvriel Tagged as braces  DGA  DocBlox  matching  PHP  tokenizer  tokens 

Whilst I was testing DocBlox on the Solar Framework I found a bug in the part of the application where I match the curly brace pairs of structures (like classes, functions, methods, etc). Every time a variable was imported in a string using the {$var} notation my algorithm thought that the function/method had ended at the closing brace of that string.

To my surprise I found out that the issue was caused by the fact that the Tokenizer has three different tokens for recognizing an opening curly brace and only one for a closing curly brace.

(more…)

No Comments »

Introducing: DocBlox

Feb 01
Posted on February 1st, 2011 In category PHP 
By mvriel Tagged as DGA  DocBlox  documentation  generator  github  PHP  phpDocumentor 

LogoEver since I discovered phpDocumentor I have been fascinated by the idea of automatic Documentation Generation. Especially for large projects where an in-depth understanding of the code is a requirement.

Unfortunately, the more I got to work with phpDocumentor the more issues surfaced with its performance, ease of use and above all: memory usage.

Over time I have encountered at least 1 project which could not be processed by phpDocumentor. This was unfortunate and thus I decided to try and contribute to the phpDocumentor project. After a pleasant introduction and solving a minor bug I attempted to solve, or at least decrease, the memory usage issues which were the main cause of my dissatisfaction.

(more…)

14 Comments »

Human readable memory usage in Linux per process

Dec 12
Posted on December 12th, 2010 In category Linux 
By mvriel Tagged as bash  command  Linux  memory 

LinuxI like to tune my VPS to use as little memory as possible. Not because I really want to; but because I just don’t have the money to spend on a 2+ GB RAM VPS and I would like to run Jira.

In order to do this I keep a close eye on the processes running and how much memory each takes. (more…)

4 Comments »

Updated the design of this blog

Dec 11
Posted on December 11th, 2010 In category Personal 
By mvriel Tagged as blog  design  site  usability 

Naenius logoAfter less than 2 years I have finished my new WordPress template for this blog. The previous theme was clunky and lacked many of the features that WordPress has to offer. I hope to address these issues and enhance this site even more. To be honest: the graphic design was finished about a year ago but the conversion process took quite some time (life got in the way multiple times).

(more…)

No Comments »

phpStorm, a true delight to work with

May 01
Posted on May 1st, 2010 In category Development  PHP 
By mvriel Tagged as code completion  Eclipse  git  ide  netbeans  PHP  phpstorm 

During my career as a PHP developer (hobbyist and professional) I have tried a multitude of IDEs and tools to write code in. Every IDE I have found thus far did great things but had their downsides. It is with phpStorm that I can send at least some of those problems to the past

(more…)

21 Comments »

pman, a unix command line PHP Manual

Jan 06
Posted on January 6th, 2010 In category Lost in space 
By mvriel Tagged as No tags assigned

PHP LogoYesterday I read a blog post by Hannes Magnusson titled Unix Manual pages for PHP functions.

Unknowingly had Hannes done me a great favor by posting the exact instruction on installing pman, a commandline tool which acts as the unix man command. Every so often I am busy working and noticed how easy it would be to have such a Unix / Linux tool, unknowing that it already existed.

(more…)

1 Comment »

The year of change

Jan 03
Posted on January 3rd, 2010 In category Personal 
By mvriel Tagged as No tags assigned
Photo is copyright of David Reece

I usually do not make new year’s resolutions, but this year is going to be different. This year will be the year of change!

In the past year I have done and experienced a lot of wonderful things but some things were left undone or have been given a lower priority than all the other great things.

To compensate I have made a TO-DO list of things that I want to change or improve this year and which I want to share with you.

(more…)

1 Comment »

Next Page »
| Log in | Icons are part of the Crystal Project and copyright of Everaldo Coelho
Mike van Riel is a Senior Software Developer at Unet BV, an ISP for the corporate segment based in the Netherlands.

With a passion for industry standards and Quality Assurance he loves nothing more than to discuss methods to improve code and ways to 'Do-It-Better'™ in general.

You can contact him by:
mike.vanriel[at]naenius.com
@mvriel
http://www.linkedin.com/in/mvriel
mike.vanriel[at]naenius.com
mike.vanriel[at]naenius.com
mike.vanriel