Rust-03: Improving the simple program
In the last post we created a simple program that would accept an input like 5+5 and calculates the result. In this post we will improve this program. To prepare for adding more operators we need to improve the input-parsing. Currently, we just split the input-string at the plus-sign. If we want to know the operator, we have to choose another approach. In this case I chose regex: #[derive(Debug)] struct Operation { left: i32, operator: char, right: i32, } impl Operation { fn from_string(input: &String) -> Option<Operation> { let regex = Regex::new(r"^\s*(\d+)\s*([+])\s*(\d+)\s*$"). Continue readingRust-02: The beginning
At first, I didn’t like Rust. Managing memory myself is something I don’t want to do. After a first look at Rust and setting it aside for a few weeks, it appeared back on my radar. I thought: “This time I’m looking deeper into it”. So I started by reading the Rust Book; and I’m still reading it and find new concepts that are really clever. One of the first things I discovered is that I do not need to manage memory myself. Continue readingRust-01: Why am I learning Rust?
This is a good question, a very good question. Why am I learning Rust? To begin with, I programmed in a lot of languages so far: C++, Python, Swift, Java, Kotlin and TypeScript to name a few. All languages have some features I missed when programming in other languages. Currently, my favorite languages are Kotlin and TypeScript; with Kotlin having the lead. These languages are expressive, and really nice to write. Continue readingMore secure deployments via ssh
If we deploy an application automatically we have to grant the CI (Continuous Integration) access to the server. Common practice is to do that via a GitLab Runner or an ssh account on the server. Personally I would not recommend using a GitLab Runner for deployments, because you have to maintain it. Another potential issue is, that you normally register runners for your whole GitLab instance or groups. That results in a scenario in which everyone can use that runner and accidentally (or not) destroy, for example, your production server. Continue readingInstall cmake 3.11.1 on Ubuntu
Sometimes you just want a newer version than ubuntu ships. This code will update cmake to version 3.11.1 or any other version you want.
Continue readingQt Signals & Slots: How they work
The one thing that confuses the most people in the beginning is the
Signal & Slot mechanism of Qt. But it’s actually not that difficult to
understand. In general Signals & Slots are used to loosely connect
classes. Illustrated by the keyword emit
, Signals are used to
broadcast a message to all connected Slots. If no Slots are connected,
the message “is lost in the wild”. So a connection between Signals &
Slots is like a TCP/IP connection with a few exceptions, but this
metaphor will help you to get the principle. A Signal is an outgoing
port and a Slot is an input only port and a Signal can be connected to
multiple Slots.