Categories
Tech

Nginx surpasses Apache Web Server

Nginx has surpassed Apache Web Server since April this year and has increased the lead since. According to Netcraft report from October 2019, Ngnix is now has 32.88% market share whereas Apache Web Server has 28.64% only and Microsoft is lagging far behind at 14% only.

Categories
Linux

Production: How to check and fix nginx errors before deployment

I will show a simple tip to test nginx configuration on live site ( production server ) before deployment. This is especially useful for server serving many different sites. A little mis-configuration, even a missed comma, can instantly bring down hundreds or even thousands of sites. So you should test it first: If it fails […]

Categories
Tech

How to modify Jekyll SEO Tag Plugin to remove .html from canonical URL and og:url

Jekyll creates pages with .html extension. You may not want the archaic .html file or your existing site may already have links without the .html at the end. In either case we need to show the pages without the .html extension at the end. This requires setting up nginx rewrite rules (for static site generated […]

Categories
Linux Tech

Static Page Sites: How to clean URL structure on Nginx

Static Sites are all the rage these days because they are: super-fast (static pages which can also be cached in memory for further speed) impossible to hack (how can you hack non-executable html pages?) very low load on the server (minimal processing) However, you will often find broken links due to minor changes in the […]

Categories
Tech

Jekyll: How to auto-generate hierarchical menu

Jekyll, the wonderful static sites generator that new Taragana corporate site is built upon, provides a navigation menu (in the default theme) which is essentially a list of all pages on the sites. This does not work well for sites with large number of pages, corporate sites and especially sites with deep page hierarchy. Jekyll […]

Categories
Java Tech

Where to store passwords / credentials in Gradle Project

Problem Statement Projects are checked in version control systems like git. You don’t want your credentials to be checked in git too. As such you need a way to easily inject your credentials in your build while keeping it away from prying eye. Solution The solution is to store it in ~/.gradle/gradle.properties. This file is […]

Categories
Featured Java Tech

Recommendation: Private / Corporate Maven Repository: Sonatype Nexus or jFrog Artifactory

Requirements: I am writing several reusable libraries which need to refer each other in myriad ways, each may be worked upon by different developer. I don’t want to create a jumbo project with sub-modules where access control is a pita. I don’t want the repository to be publicly accessible. There should be fine-grained access control […]

Categories
Tech

Enable LXD GPU pass-through in Ubuntu 18.04 (Bionic Beaver)

Problem One of the biggest challenge (aside from upgrading nvidia & cuda) in upgrading from Ubuntu 16.04 to Ubuntu 18.04 is enabling GPU passthrough in LXD Containers. Due to a bug in parsing logic, it cannot properly parse Blacklisted line in nvidia-410 drivers. Solution The simplest solution is to upgrade lxd to 3.0.2. To do […]

Categories
Java

How to rapidly test alternative ideas in Java during development

Problem Java is a compiled language and in any non-trivial project you use multiple libraries which are neatly assembled for you when you run the application with your build system like gradle. This makes it hard and slow to test alternative ideas as you have to compile and run the project each time which is […]

Categories
Tech

Guide: HAProxy HTTP Basic Authentication for specific sites (SSL Termination)

Objective I use HAProxy to serve multiple SSL/TLS enabled sites with HAProxy doing SSL termination. The sites serve regular HTTP while users see proper HTTPS sites (with free certificates from LetsEncrypt). My objective was to provide HTTP Basic Authentication as a second layer of protection for certain applications like NextCloud (DropBox clone) or Gitea (GitHub […]