Skip to content

Instantly share code, notes, and snippets.

View utkuozdemir's full-sized avatar

Utku Özdemir utkuozdemir

View GitHub Profile
@utkuozdemir
utkuozdemir / main.go
Last active January 18, 2024 11:04
TCP Socket Example in Golang
package main
import (
"context"
"errors"
"fmt"
"io"
"log"
"net"
"os"
@utkuozdemir
utkuozdemir / regex.txt
Last active January 18, 2023 16:42
JS regex to validate Go time.Duration
^[-+]?(((\d+(\.\d*)?|\d*(\.\d+)+)(ns|us|µs|ms|s|m|h))|0)+$
@utkuozdemir
utkuozdemir / migrate.sh
Created November 14, 2022 21:09
pv-migrate in a loop
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
PVCS=(
"src-kubeconfig1/src-ctx1/src-ns1/src-pvc1:dest-kubeconfig1/dest-ctx1/dest-ns1/dest-pvc1"
"src-kubeconfig2/src-ctx2/src-ns2/src-pvc2:dest-kubeconfig2/dest-ctx2/dest-ns2/dest-pvc2"
"src-kubeconfig3/src-ctx3/src-ns3/src-pvc3:dest-kubeconfig3/dest-ctx3/dest-ns3/dest-pvc3"
)
@utkuozdemir
utkuozdemir / JsonTest.kt
Last active October 27, 2022 07:45
Kotlin + Jackson Pretty Print Override
package org.utkuozdemir.json
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter
import com.fasterxml.jackson.core.util.Separators
import com.fasterxml.jackson.databind.ObjectMapper
import org.junit.jupiter.api.Test
data class Person(val name: String, val age: Int)
class CustomPrettyPrinter : DefaultPrettyPrinter() {
@utkuozdemir
utkuozdemir / clear-kvm.sh
Created July 6, 2022 17:09
Clear all KVM machines
#!/usr/bin/env bash
set -euo pipefail
virsh list --all | \
awk '{print $2}' | \
xargs -L1 -I {} virsh destroy {} || true
virsh list --all | \
awk '{print $2}' | \
xargs -L1 -I {} virsh undefine {} || true
@utkuozdemir
utkuozdemir / linux-bridge-demo.sh
Last active June 14, 2022 12:13
How to configure a Linux bridge
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
# https://developers.redhat.com/blog/2018/10/22/introduction-to-linux-interfaces-for-virtual-networking
# delete everything
sudo killall nc || true
sudo iptables -D FORWARD -i br1 -o br1 -j ACCEPT || true
sudo ip netns del ns1 || true
@utkuozdemir
utkuozdemir / sync.sh
Created June 2, 2022 10:01
Sync current directory to remote using Rsync for remote development
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )"
LOCAL_DIR=$SCRIPT_DIR
REMOTE_SSH_USER=utku
REMOTE_SSH_HOST=u-home-pc-realtek-nic
@utkuozdemir
utkuozdemir / tail.go
Last active November 19, 2021 20:45
Tail Kubernetes pod logs in Golang, reconnect if the stream times out/fails
package main
import (
"bufio"
"context"
"fmt"
corev1 "k8s.io/api/core/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
"time"

Keybase proof

I hereby claim:

  • I am utkuozdemir on github.
  • I am utkuozdemir (https://keybase.io/utkuozdemir) on keybase.
  • I have a public key ASCcFj5bVMx1-1Y0az9svIsZ66yx6SYGErTwjiM49XQZ_Ao

To claim this, I am signing this object:

@utkuozdemir
utkuozdemir / alpine-user.Dockerfile
Last active October 11, 2023 19:47
A gist to add a user to the Alpine docker image
FROM alpine:3
ENV USER_ID=65535
ENV GROUP_ID=65535
ENV USER_NAME=rsync-user
ENV GROUP_NAME=rsync-user
RUN addgroup -g $GROUP_ID $GROUP_NAME && \
adduser --shell /sbin/nologin --disabled-password \
--no-create-home --uid $USER_ID --ingroup $GROUP_NAME $USER_NAME