Talk: „Relational database migrations (with Flyway)“

The slides for the talk „Relational database migrations (with Flyway)“ (RheinNeckarJS Meetup|Twitter, 15.02.2017) are online at Speakerdeck.   I will show how you can use Flyway to have a consistent way to migrate databases (MySql, Maria, Oracle, SQL Server and a lot more) automatically during deployment/as a part of your continuous deployment process. This can also help you with your integration tests.   Content: What are migrations? What are no migrations? Why should I automate it? How does Flyway work? Flyway in an automated deployment process Live Demo


Minimizing your Docker images

As your project grows it can be challenging to make sure that only the necessary files get sent to the Docker daemon.   There are several tips to help you with this.   Use a „build“ directory Using a .dockerignore file to ignore all files that should not be sent to the docker daemon sounds easy but in large projects this can be quite challenging task, especially if your build tasks get more and grow. I often found it easier to create a single „build“ director during the build process (like grunt, gulp or similar), build and prepare everything into […]


Talk: „Pipelines vom Commit bis zur Docker-Testinstanz“

Die Unterlagen zum Vortrag „Pipelines vom Commit bis zur Docker-Testinstanz“ (DevOps Rhein-Neckar Meetup, 23.01.2017) sind auf Speakerdeck online verfügbar.   In 5 Minuten vom einem Entwickler-Commit hin zu einer Testinstanz oder zu einem kompletten Deployment: Das ermöglicht zügiges Testen und schnelle Deployment-Zyklen. Möglich wird dies bspw. mit „Docker Cloud“. Allerdings ist „Docker Cloud“ darauf ausgelegt, mit öffentlichen Repositories und öffentlich erreichbaren Testsystemen zu arbeiten. Ist dies nicht der Fall, so kann man eine solche Pipeline mit einer Kombination von Open-Source-Tools erreichen:   Mit einer Kombination aus Version Control System, Jenkins, Docker und nginx sowie einigen kleinen Netzwerkkniffen ist es möglich, […]
Android Robot Logo


(Incomplete) List of Android app permissions requiring a privacy policy

„Your app has an apk with version code xyz that requests the following permission(s): …. Apps using these permissions in an APK are required to have a privacy policy set.“     This is a notification display in the Google Play Developer Console, when an Android app is requesting one or more certain permissions. Google states that every app that „handles personal or sensitive user data (including personally identifiable information, financial and payment information, authentication information, phonebook or contact data, microphone and camera sensor data, and sensitive device data)“ is required to have a „privacy policy in both the designated […]


Configure nginx for SSL

When setting up nginx to use HTTPS we checked the site with the SSL Server Test of Qualys. The result page showed several hints to improve security.   SSL Configuration   Key Exchange / DHE (Ephemeral Diffie-Hellman) parameters The default nginx configuration will use a key that is too weak. To generate and use a stronger key, first generate a stronger DHE parameter:   sudo openssl dhparam -out /etc/ssl/private/dhparams.pem 2048   This will create a new file dhparams.pem in /etc/ssl/private/, containing the new key. The key file can be reference in the nginx configuration with the ssl_dhparam configuration parameter.   […]


.NET Framework: Directory- and File-methods trim paths

A generic error occurred in GDI+, that was the very generic error message when using System.Drawing.Image.Save to save an image to a previously created directory.   Further investigations showed that it actually was not an error with Image.Save, which in fact was behaving correctly (let aside the cryptic error message). The „error“ was not an error per se, but more an unexpected behaviour of the method used to create the directory: Directory.CreateDirectory.   This method has been called erroneously with a path having a space character at the end of one of path specification parts: private static void Test(Image newImage) […]
Nach oben
Zur Desktop-Version