❯ Guillaume Laforge

Posts

Decoding a QR code by hand

Doing sport at home on a treadmill or an elliptical bike is pretty boring, when you’re confined, so to make things more interesting, I’m watching some videos to learn something new while exercising. This time, I found this old video about how to decode QR codes… by hand! Have you ever thought how these were encoded? This video comes from the Robomatics YouTube channel. You recognise easily QR codes thanks to the 3 big squares with the inner white line. Read more...

Defence against the Docker arts by Joe Kutner

Confined at home, because of the corona-virus pandemic, I’m also doing sport at home. I have a small treadmill for light walks (mostly during conf calls!) and also an elliptical bike. I’d much rather run outside though, but I have to use what I have, even if I hate that stationary elliptical bike in my basement. It’s so boring! So to avoid feeling like wasting my time, I decided to watch videos during my sessions! Read more...

Start the fun with Java 14 and Micronaut inside serverless containers on Cloud Run

Hot on the heels of the announcement of the general availability of JDK 14, I couldn’t resist taking it for a spin. Without messing up my environment — I’ll confess I’m running 11 on my machine, but I’m still not even using everything that came past Java 8! — I decided to test this new edition within the comfy setting of a Docker container. Minimal OpenJDK 14 image running JShell Super easy to get started (assuming you have Docker installed on your machine), create a Dockerfile with the following content: Read more...

Serverless tip #7 — Create mini APIs with Cloud Functions and Express routing

Requirements: an existing Google Cloud Platform account and project Cloud Functions should be enabled for that project Compared to the previous tip when using Exress’ request path attribute, we can take advantage of Express routing. So to support the following paths: https://us-central1-myproject.cloudfunctions.net/api/customers https://us-central1-myproject.cloudfunctions.net/api/customers/32 https://us-central1-myproject.cloudfunctions.net/api/customers/32/address We can have our functions require Express by adding Express in package.json: { "name": "mini-api-router", "version": "0.0.1", "dependencies": { "express": "^4.17.1" } } Then we can require that dependency in our new functions script: Read more...

Serverless tip #6 — Create a mini web API with Cloud Functions

Requirements: an existing Google Cloud Platform account and project Cloud Functions should be enabled for that project We often use individual HTTP Cloud Functions as a single endpoint, and we pass data to the functions with either query parameters, or via a POST body payload. Although it’s a good practice to keep the scope of a function small, however, you can easily write mini Web APIs for a given function, with different paths for different needs, like with usual Web frameworks. Read more...

Serverless tip #5 — How to invoke a secured Cloud Run service locally

Requirements: an existing Google Cloud Platform account with a project you have enabled the Cloud Run service and already deployed a container image your local environment’s gcloud is already configured to point at your GCP project By default, when you deploy a Cloud Run service, it is secured by default, unless you use the –allow-unauthenticated flag when using the gcloud command-line (or the appropriate checkbox on the Google Cloud Console). Read more...

8 production-ready features you'll find in Cloud Run fully managed

Since we launched Cloud Run at Google Cloud Next in April, developers have discovered that “serverless” and “containers” run well together. With Cloud Run, not only do you benefit from fully managed infrastructure, up and down auto-scaling, and pay-as-you-go pricing, but you’re also able to package your workload however you like, inside a stateless container listening for incoming requests, with any language, runtime, or library of your choice. And you get all this without compromising portability, thanks to its Knative open-source underpinnings. Read more...

Serverless tip #4 — Discover the full URL of your deployed Cloud Run services with gcloud format flag

Requirements: an existing Google Cloud Platform account you have enabled the Cloud Run service and deployed already a container image One of the nice things with Cloud Run is that when you deploy your services, you get a URL like https://myservice-8oafjf26aq-ew.a.run.app/, with a certificate, on the run.app domain name, etc. You see the name of the service: myservice, the region shortcut where it was deployed: ew (Europe West), and then . Read more...

Serverless tip #3 — Use the Cloud Run button on your Git repository to deploy your project in a click

Requirements: an existing Google Cloud Platform account a Git or Github repository containing your project your project can have a Dockerfile (but not mandatory) With Cloud Run, you can easily deploy a container image and let it scale up and down as needed, in a serverless fashion: No need to focus on infrastructure (provisioning servers, clusters, upgrading OS, etc.) Your application can scale transparently from 0 to 1, and from 1 to n (no need for a pager when your app is featured on Hackernews) You pay as you go, proportionally to the usage If your project is hosted on Github, for example, how can you help users get started with your project? Read more...

Serverless tip #2 — Deploy an executable JVM application with gcloud without app.yaml or build tool plugin

Requirements: an existing Google Cloud Platform account and project a Java or alternative language web application a build that creates a standalone executable JAR file Usually App Engine applications in Java are deployed with the gcloud command-line interface, or via a Maven or Gradle build plugin. Either way, an app.yaml file to describe your application is required to let the cloud SDK know that the project at hand is an App Engine project. Read more...