The slice will be sorted after the following fields: Version, Generation and Time. The trick is the switch statement and the case expression case iv.Version != jv.Version followed by the statement return iv.Version < jv.Version.
You can use this pattern whenever you want to sort slices over multiple fields in Go.
In this blog post I will show you how to connect an Ethernet only device to Wi-Fi using an extra router and the WDS functionality. I initially wanted to install the TP Link Archer T4U WiFi adapter driver on my Ubuntu 20.04 PC but unfortunately the driver is no longer supported.
Since I really needed high internet speed for my PC, I decided to connect it via an Ethernet cable and buy another TP-Link router to use in WDS mode.
WDS mode allows routers to communicate with one another without using wires.
⚙️ The configuration of the WDS router is as follows. I left the operation mode in Router Mode.
Then, I navigated to Network -> LAN and set the IP address to 192.168.0.2. Because my old router had the IP address of 192.168.0.1.
The next step would be to navigate to Wireless -> WDS. Click survey and select the SSID of your root router. If the WDS bridging is successfully you should see a Connected message ✅.
Finally, go to Network -> DHCP Server and disable it. All these operations should be performed on the router that you want to bridge, not the root router! 🕸️
Now that your router has a WDS bridge to the root router, you can connect your PC to it via an Ethernet cable and place it next to your PC. A brand new 5GHz Wi-Fi adapter might have the same price 💰 as a new router 🤑, and to be honest unless you’re doing some penetration testing I don’t see the need of a WiFi adapter.
I have recently updated the firmware of my RØDE audio interface from 1.12.x to 1.13, and the device was no longer working properly on Linux. I found out that it was an audio sampling issue.
[feb21 16:20] usb 1-9.3: 1:1: cannot set freq 44100 to ep 0x82
[ +0,005008] usb 1-9.3: 1:1: cannot set freq 44100 to ep 0x82
[ +0,005019] usb 1-9.3: 1:1: cannot set freq 44100 to ep 0x82
[ +0,004971] usb 1-9.3: 1:1: cannot set freq 44100 to ep 0x82
[ +0,015019] usb 1-9.3: 1:1: cannot set freq 44100 to ep 0x82
This is a short tutorial describing how to monitor your Kubernetes cluster container logs using Loki stack. But why? Because it is easier to view, filter your logs in Grafana and to store them persistently in Loki rather than viewing them in a terminal.
Let’s get started! Assuming you already have Microk8s installed, enable the following addons:
You can enable an add-on by running microk8s enable. Ex: microk8s enable dns
dns # CoreDNS
ha-cluster # Configure high availability on the current node
metrics-server # K8s Metrics Server for API access to service metrics
storage # Storage class; allocates storage from host directory
Note: Microk8s comes with a bundled kubectl and helm3. Just run microk8s kubectl or microk8s helm3. If you want to use your host kubectl you can configure it via: microk8s config > ~/.kube/config.
Warning: Be extra careful when running the microk8s config > ~/.kube/config command because it will overwrite the old config file.
Then proceed by installingLoki. Loki will store all the logs using object storage. This is efficient but the trade-off is that you can’t do complex aggregations and searches against your data. We are going to install Loki for exploration purposes but if you’re looking for a production ready version, check out the loki distributed helm chart.
Run the following helm commands to install Loki. You may want to install helm or use microk8s helm3 command.
Finally, we need to visualize the logs using Grafana. Install it by running the helm command and then, edit the service to change its type from ClusterIP to NodePort.
Changing the service type to NodePort will allow you to visit Grafana in your browser without the need of adding an ingester.
❗❗To use vscode as the default editor export the following environment variable: KUBE_EDITOR=code -w
helm install grafana grafana/grafana
kubectl edit service/grafana
# Change metadata.spec.type to NodePort
# Grab the service's port using kubectl get services and look for 32204:
# grafana NodePort 10.152.183.84 <none> 80:32204/TCP 6d
Note: If you’re on Windows to access the service you will need to run kubectl cluster-info and use the IP address of the cluster. On Linux you should be able to access http://localhost:32204.
Kubernetes control plane is running at https://172.20.138.170:16443
Grab your Grafana admin password by following the instructions from the helm notes. The notes are displayed after Grafana has been installed. If you don’t have base64 on your OS check out CyberChef, it can decode base64 text.
After you’ve successfully logged in, head to Settings -> DataSources and add the Loki data source.
Head back to the Explore menu and display Loki’s logs using the Loki data source in Grafana. You can click log browser to view all available values for the app label.
Promtail should now import logs into Loki and create labels dynamically for each newly created container. If you followed along, congratulations!