Articles
IoT RFID reader
RFID is a conveninent technology for access control and authentication. In this project, I connected an RC522 RFID reader to an ESP32 in order to use it for IoT applications. Additionally, to provide feedback to the user, the ESP32 is also connected to an SSD1306 OLED display and a buzzer. I chose an ESP32 over an ESP8266 simply because of the amount of GPIOs required.
Docker images and containers management
Here are a few commands to manage docker images and containers
This very application, a CMS based on Neo4J
Publishing articles on a website can be as simple as uploading HTML files to a web server. However, writing articles in raw HTML can be time consuming. A content management system (CMS) is an application designed to solve this issue by providing a simple way to create and manage web content directly from the web browser. There are many CMSs available, namely Wordpress or Joomla but I decided to create my own as a form of practice and in order to have it highly customized to my needs.
Cookies
Cookies are key-value pairs stored on a web browser. They can be set (i.e. created) using client-side JavaScript. Conversely, a server can get a client's browser to set cookies via instructions in an HTTP response. As such, cookies can be set by both the client and the server.
Cookie-session
User authenticates using username and password, server sets a signed cookie containing serialized user info
Managing disks in Linux
Hard disk drives (HDDs) and Solid state drives (SSDs) are currently the most widespread high capacity storage devices. When such a drive is connected to a computer running Linux, it can be found in the device directory <em>/dev/</em> under the name <em>sdX</em>, where <em>X</em> is a letter changing for each drive.
Kubernetes persistent volumes
Applications deployed on a Kubernetes cluster run inside containers. As a consequence, their file system is that of the container, which means that if the container is removed, the data it contained is lost.
Gitlab CI dealing with credentials
GitLab can automatically dockerize applications using the appropriate CI configuration. However, for obvious security reasons, it is bad practice to include credentials in a git repository. Consequently, the CI pipeline is by default not in a position to include credentials in the dockerized application, which most likely prevents the latter from running as intended.
Kubectl pull new version of image without changes to manifest
When using kubectl apply using an already applied and unchanged manifest file, nothing happens on the Kubernetes cluster. However, deployments can be configured so as to always pull a new version image upon restart. This is achieved using the, <code>imagePullPolicy: Always</code> parameter:
Mongoose bulk update upsert
MongoDB's upsert option enables the creation of a new document if the query of an update operationdoesn't match any existing document. Basically, an update command with upsert creates a document if it does notexist already, and update it otherwise.