Google PageSpeed Insights, how to get 100/100

After many adjustments, I finally manage to score 100/100 on Google PageSpeed Insights. If you use WordPress, you will notice that the difficulty will depend on your current theme and installed plugins. In my case, I started with a score of 51 on mobile and 72 on desktop. In this post, I will present a summary of the steps I followed to get the best score on this tool.

Continue reading “Google PageSpeed Insights, how to get 100/100”

MuPDF Xamarin Android binding on Nuget

MuPDF is a small, fast and free PDF library written in portable C, available for Android. You can use this library for its built-in PDF viewer, for rendering PDF pages to images with a high-quality, manipulating PDF files in various ways…

It supports PDF 1.7 with transparency, encryption, hyperlinks, annotations, searching and more. It also reads OpenXPS documents. It does not support interactive features such as form filling and JavaScript.

If you want to use MuPDF in your Xamarin Android application, you can use this MuPDF Xamarin Android Binding nuget package that I made.

Continue reading “MuPDF Xamarin Android binding on Nuget”

SQL query results to CSV with PL/SQL

In this post I’ll show you how to get Oracle SQL query results to CSV format into a CLOB only by calling stored procedures. This CLOB can be stored later in a table row or in a file using UTL_FILE.

There are two stored procedures:

  • The first one, cursor_to_csv, takes a cursor as parameter
  • The second one, query_to_csv, takes a VARCHAR2
Continue reading “SQL query results to CSV with PL/SQL”

Caching method results easily with AOP

In many cases, using a caching mechanism can drastically improve performances. Processed results of methods can be stored in memory or in files so they are ready to be returned immediately when we call the methods again.

In some .NET applications, we can use the MemoryCache class from System.Runtime.Caching to store data in memory. However, using such library in a basic way may induce some problems such as:

  • Adding caching in each method which needs it may result in less readable and polluted code.
  • The repetitive use of such code may induce errors (especially copy-pasted code).
  • Depending on the nature of projects (mobile apps, websites, web services, desktop apps), we may need a different caching approach.

In order to avoid all these problems, I have written a generic caching aspect using Autofac and Castle DynamicProxy.

Continue reading “Caching method results easily with AOP”