Skip to content

Instantly share code, notes, and snippets.

# enable ssh on initial boot
touch ssh
# ssh public key setup
mkdir -p ./home/pi/.ssh
cat << EOF > ./home/pi/.ssh/authorized_keys
# --- BEGIN PVE ---
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEApHSlBYGanB/nObsWYIZXF7kcT9Sa2oATwdnNqkb+K/8P3MRLY67g1Ki1yhATpqkPhGrwie5wa60+5T2WpVAyeQ4GzxHVZ9Vjk64Wmc/2yabq4LZRnw+9uZvH2Wx5UlMkOJM2trKYZof6pdz/n044BVihZnFQfWnTYg8vKlKKtFsL0sGKz+DWBgr49fldj4qUB6Nmn5M7+4RqYAAd3af+6ljOSCv4NG2r1ZbMRcBW89569/msPcfQYcBzVXXeC5Z+7o5Svk/10pzUaT6P09Kyz8j6T8iy/T+ugsYZ4Se3l2SRtnAFsd2AJMu6kHp5vaqNOZbnJLuAvbQVp+NL/KI88GZbGNZnua1C/L2zLwarpdZw27NgOJRc4U2sNVPI9qWlXNAPPkpVmpbQvX7gem0BmQdoTgYU6nXexTzGDlSX5yCc13i+xeIJKOf0cCLRse3JLD1fxefqlr2HqlH3cx1ISl0T4Pcj+8QuWAVmAASRaR6+ij31nArIAnPmvAGFDvrfa4Tp6AYQNxmjrqyMBrO0r6NpwbHwKzEsYBoAKjuQTBeE5E+mAPpJWOF+tVZlLPuWZyI1IfPIluVgOnSJ/F1iC4MhAFVZ+bUiQl2p2cUEL2Qzajzm9CfAABIDHSj/piqkv2+8xVbkDn0qtM21q1nMbJnxu0gFqUyVZtE1Vz+VXy0= rifat.aricanli@gmail.com
# --- END PVE ---
EOF
async buildConsumers() {
const path = Path.resolve(__dirname + '/../../../Consumers');
if (FS.existsSync(path)) {
const consumers = Object.values(RequireAll({
dirname: path,
recursive: false
})).map(consumer => consumer.default);
@rifatx
rifatx / btaudioautoconnect.sh
Last active May 4, 2024 15:16
raspi osmc setup and autoconnect to alsa:default bt speaker
#!/bin/bash
# tweaked from https://gist.github.com/mitchese/7a3373132f94fc946b1cbeb2b04e7818
USER="kodi-user"
PASSWORD="kodi-pass"
PORT="8080"
ANALOGUEDEVICE="ALSA:sysdefault:CARD=Headphones"
BTDEVICE="ALSA:bluealsa"
STAT="NA"
@rifatx
rifatx / sdcard.sh
Last active May 23, 2018 11:15
sd card backup, restore and partition resize
#backup
dd bs=4M if=/dev/sdb | gzip > sdcard.gz
#restore
gzip -dc sdcard.gz | dd bs=4M of=/dev/sdb
#recreate partition
fdisk
p
# note start sector of partition 2 -> start
@rifatx
rifatx / clean-gcr-images.sh
Last active May 30, 2018 12:58
shell script to clean all but last N images in gcr
#!/bin/bash
repoAddress="xx.gcr.io/xXx"
repos=$(gcloud container images list --format='table[no-heading](name:sort=1)' --repository=repoAddress)
while read -r repo; do
images=$(gcloud container images list-tags --limit=99999 --sort-by=~timestamp --format='get(digest)' $repo)
n=10
while read -r image; do
if (( n < 1 )); then
gcloud container images delete --quiet "$repo@$image"
fi;
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEApHSlBYGanB/nObsWYIZXF7kcT9Sa2oATwdnNqkb+K/8P3MRLY67g1Ki1yhATpqkPhGrwie5wa60+5T2WpVAyeQ4GzxHVZ9Vjk64Wmc/2yabq4LZRnw+9uZvH2Wx5UlMkOJM2trKYZof6pdz/n044BVihZnFQfWnTYg8vKlKKtFsL0sGKz+DWBgr49fldj4qUB6Nmn5M7+4RqYAAd3af+6ljOSCv4NG2r1ZbMRcBW89569/msPcfQYcBzVXXeC5Z+7o5Svk/10pzUaT6P09Kyz8j6T8iy/T+ugsYZ4Se3l2SRtnAFsd2AJMu6kHp5vaqNOZbnJLuAvbQVp+NL/KI88GZbGNZnua1C/L2zLwarpdZw27NgOJRc4U2sNVPI9qWlXNAPPkpVmpbQvX7gem0BmQdoTgYU6nXexTzGDlSX5yCc13i+xeIJKOf0cCLRse3JLD1fxefqlr2HqlH3cx1ISl0T4Pcj+8QuWAVmAASRaR6+ij31nArIAnPmvAGFDvrfa4Tp6AYQNxmjrqyMBrO0r6NpwbHwKzEsYBoAKjuQTBeE5E+mAPpJWOF+tVZlLPuWZyI1IfPIluVgOnSJ/F1iC4MhAFVZ+bUiQl2p2cUEL2Qzajzm9CfAABIDHSj/piqkv2+8xVbkDn0qtM21q1nMbJnxu0gFqUyVZtE1Vz+VXy0=

Keybase proof

I hereby claim:

  • I am rifatx on github.
  • I am rifatx (https://keybase.io/rifatx) on keybase.
  • I have a public key ASBfHhbUewoJnnBO32Gpb8LFdo1CzxdwUE3doxXfT4MaEQo

To claim this, I am signing this object:

@rifatx
rifatx / get-references.cs
Last active October 15, 2021 08:01
Get references of an .NET assembly
private IEnumerable<PortableExecutableReference> GetReferences(string basePath, string assemblyName)
{
List<string> refNames = new();
List<PortableExecutableReference> references = new();
Queue<AssemblyName> pending = new();
var depth = 0;
var mainAsmName = new FileInfo(assemblyName).Name;
mainAsmName = mainAsmName.Substring(0,
mainAsmName.LastIndexOf(".", StringComparison.InvariantCultureIgnoreCase));
@rifatx
rifatx / PlSqlParserUtils.cs
Last active October 20, 2021 10:34
PlSqlParser utils
internal static class Utils
{
public static PlSqlParser CreatePlSqlParser(string spContent)
{
var s = CharStreams.fromString(spContent);
var upper = new CaseChangingCharStream(s, true);
var lexer = new PlSqlLexer(upper);
var tokens = new CommonTokenStream(lexer);
@rifatx
rifatx / VisitParameter.cs
Created October 20, 2021 10:26
ANTLR PlSqlParser VisitParameter override
public override object VisitParameter(PlSqlParser.ParameterContext context)
{
var p = new Parameter
{
Name = context.parameter_name().GetText(),
Direction =
$"{context.GetChild<TerminalNodeImpl>(0)?.GetText() ?? "IN"}{context.GetChild<TerminalNodeImpl>(1)?.GetText()}",
Type = context.type_spec().GetText()
};