Posts

Showing posts from 2016

Simple VPN autoconnect for Windows 8 and 10

Since Windows 7, for some reason VPN support in new Windows versions has annoyingly decreased in quality. You can't create shortcuts to VPNs on the desktop or in the start menu anymore; you can't set up a VPN connection to automatically connect on start up; and with Windows 10 there is even a bug (at the time of writing this article) that makes you click on another connection item in the list before the Connect button appears. The simplest way to achieve automatic VPN connection on computer start-up is to create a batch/cmd file with the following command: rasdial "VPN Connection" username password Where: - rasdial is the name of the command-line utility that will perform the connection - replace "VPN Connection" by the actual name of the VPN connection - replace username by your actual VPN user name - replace password by your actual VPN password If you want the VPN connection to be started when you log on, simply place this batch script into ...

Solution for "DOMException: Failed to load because no supported source was found" error in Chrome with HTML5 media API

After updating Chrome to release 53 this week, my web application was no longer able to use the media API to capture video with a webcam. This is the third time that I am forced to update my code due to changes in Chrome... this is getting a little annoying! The error message I was getting in my javascript console is: DOMException: Failed to load because no supported source was found I'll keep it short. The problem was the way I set the source of my media element. I was setting the source like this: navigator.getUserMedia(videoObj, function(stream) {    CaptureImageStream = stream;    CaptureImageVideo.src = stream ;    CaptureImageVideo.play(); }, errBack); It seems like this is no longer supported. I changed it to this and it now works again: navigator.getUserMedia(videoObj, function(stream) {    CaptureImageStream = stream;    CaptureImageVideo.src = window.URL.createObjectURL(stream) ;    CaptureImageVi...

Nginx: set up a LetsEncrypt SSL certificate with auto-renewal in 3 easy steps

Unless you have been living under a rock for the past year, you should know by now that you can get SSL certificates free of charge from LetsEncrypt , without registration, and with automatic renewal! This is one of the best thing that's happened to web admins and the web in general in the recent years. The certificates are authentic and work great in all browsers (you get the little green lock icon like everywhere else). Let's get straight to the point. The three steps are summarized here: 1) Download LetsEncrypt (the application) for your Linux server 2) Run the application to generate a certificate for your domain and set up the monthly auto-renew cron job 3) Add the certificate to your Nginx configuration. Step 1: download LetsEncrypt Install git if you haven't done so yet: # apt-get install git Use git to get the application and store it somewhere (ie: /root/temp) # git clone https://github.com/letsencrypt/letsencrypt /root/temp/letsencrypt ...

Nginx and LetsEncrypt SSL certificate problem with iOS and Safari (fixed)

Image
I have recently started using LetsEncrypt as my main SSL certificate supplier, it's amazing! With the auto-renew cron task, I have literally 0 work to do to keep certificates up to date, and of course, it's free. I recently noticed an issue though: when I visit my websites over HTTPS on my iPhone (and reportedly the problem exists with Safari on Mac OS X as well), the sites simply will not load. This is the error I get: The error reads: " Safari cannot open the page because the network connection was reset. The server may be busy ". After trying to sort out the problem for hours and Googling up the error everywhere, I finally stumbled upon this forum thread . Well thank you Mr. Duckson because that really did fix the problem! The solution: in your server {  ... } block, insert the ssl_session_cache directive with whatever value you deem fit. Example from Nginx documentation:  ssl_session_cache shared:SSL:10m ; Save your configuration, reload Ngi...

HTML5 video capture from browser: error with "stop() not a function"

A quick blog post about recent changes in the MediaStream API support in modern browsers. I had previously developed a function allowing users to capture images from their webcam, based on tutorials found on the web. Here was my code to initialize the capture canvas: function CaptureImageBeginCapture () { CaptureImageCanvas = $ ( "#ImageCaptureCanvas" )[ 0 ]; var videoObj = { "video" : true }, errBack = function (error) { console . log ( "Video capture error: " , error. code ); }; CaptureImageVideo = $ ( "#ImageCapturePreviewFrame" )[ 0 ]; CaptureImageContext = CaptureImageCanvas . getContext ( "2d" ); // Put video listeners into place if ( navigator .getUserMedia) { // Standard navigator .getUserMedia( videoObj , function (stream) { CaptureImageStream = stream; CaptureImageVideo . src = stream; CaptureImageVideo . play (); }, errBack ); } else if ( n...

3 PHP quizzes for testing your knowledge: beginner, medium, and advanced levels

Hello everyone, I have created three short quizzes for testing your PHP knowledge. They were meant to be used before job interviews as a way to provide a quick evaluation of the skill level of the applicant. They have served their purpose so I am releasing them to the public. If you really want to know your level, don't google up the answers while playing. Beginner : http://goo.gl/H9seNQ Medium : http://goo.gl/HBNezZ Advanced : http://goo.gl/5ESofc What was your score? Also, did you notice any errors in the questions? I know some of the answers can be up to debate (the regexp one in particular) but obviously if you know the answer you will pick the one that best matches what you think is the truth.  Also, keep in mind that while I consider these to be "beginner", "medium", and "advanced" levels, depending on your own skills you could laugh and consider me a newbie. It's just that from my perspective, if an intervi...