Skip to content

Instantly share code, notes, and snippets.

View DamianSuess's full-sized avatar
👍
Enjoying every day

Damian DamianSuess

👍
Enjoying every day
View GitHub Profile
@DamianSuess
DamianSuess / Avalonia-MultiBinding.axaml
Created August 28, 2024 20:02
Avalonia-MultiBinding
<UserControl.Resources>
<ResourceDictionary>
<DataTemplate x:Key="FlatDeviceInfo" DataType="models:DeviceInfo">
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} - {1}">
<Binding Path="Address" />
<Binding Path="DeviceTypeName" />
</MultiBinding>
</TextBlock.Text>
@DamianSuess
DamianSuess / Laravel-ApiAndWebController.php
Created June 15, 2024 14:12
Laravel 11 - API and Web Sharing Controller
/*
* Example showing how to share an API route with a Web (view)
* If the request expects JSON, it shall receive it. Otherwise, display the View.
* Remember, just because you can, doesn't mean you should.
*/
class ActivityController extends Controller
{
/**
* Display a listing of the resource.
*/
@DamianSuess
DamianSuess / Bash-Readme.md
Last active May 20, 2024 16:05
C# Linux BASH

About C# BASH Sample

The example code here references Docker and IoT Edge as an example. The user/pass is Base64 encoded as part of the Bash class in this example.

By no means should you keep the admin user/pass hard-coded in the production class, this is an example piece.

What's The Difference?

The Bash class has both RunAs(..) and Command(..), and each allows you to run using sudo. The difference is, the RunAs(...) method does not require your app to be started with elevated privledges. Where as, Command(..) requires you to start the app with elevated privledges in order to execute commands using sudo.

@DamianSuess
DamianSuess / VSCode-Linting.md
Last active January 23, 2024 15:02
VSCode Automatic Linting

When developing in medium to larger teams, becomes more important to be able to automatically maintain code styling throughout the project to maintain readability and clarity. This rule also applies to smaller projects as well, abiet at times easier to manage ("New guy, please remove the 5 blank lines in a row in the method. And the blank spaces after the statements.").

Below is a quick snip for configuring VSCode to automagically take care of this every time you press save (Ctrl+S). The following assumes you already have a project workspace already started in VSCode.

TL;DR Configuration

Key files:

  • .vscode/extensions.json
  • .vscode/settings.json
@DamianSuess
DamianSuess / AvaloniaDoubleClickListBox.axml
Last active May 24, 2024 21:10
Avalonia - DoubleTapped Behavior
<UserControl ...>
<!-- Sample 1 - ListBox Data Template - Dobule-Tapped -->
<UserControl.Resources>
<ResourceDictionary>
<DataTemplate x:DataType="models:HardwareEvent" x:Key="BleAdvertisement">
<Panel Background="Transparent">
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="DoubleTapped">
<!-- Must set the parent, otherwise it will look for the 'Command' in the template's DataType -->
<ia:InvokeCommandAction Command="{Binding $parent.((vm:BluetoothViewModel)DataContext).CmdCopyText}"
@DamianSuess
DamianSuess / CommandBehaviorBase.cs
Last active September 7, 2023 21:22
Avalonia Custom Behaviors
using System.Windows.Input;
using Avalonia;
using Avalonia.Xaml.Interactivity;
namespace SuessLabs.Tool.Common.Behaviors;
/// <summary>Base class for behavior command binding event on its source and executes its actions when that event is fired.</summary>
/// <typeparam name="T">Type of behavior.</typeparam>
public class CommandBehaviorBase<T>
: Behavior<T>
@DamianSuess
DamianSuess / CacheService.cs
Last active August 29, 2023 20:20
C# CacheService
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Caching.Memory;
using CacheExample.Extensions;
namespace CacheExample.Services;
@DamianSuess
DamianSuess / Remove-DotNet-Linux.md
Last active April 23, 2024 05:51
Remove DotNet From Linux (Ubuntu)

Remove .NET From Linux

This document outlines steps for performing a deep clean on your Linux (Ubuntu 20.04) machine.

An example for performing could be, if your installation does not show in dotnet --list-sdks. Performing this deep clean and reinstalling will solve it in most cases.

Install

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
@DamianSuess
DamianSuess / threads.md
Last active January 2, 2024 22:30
Awaiting a task with timeout

C# - Awaiting Task with Timeout

Source Article

Scenerio, you have an awaitable object and you want to await it with a timeout. How would you build that?

What you can do is use a when_any-like function in combination with a timeout coroutine. For C# this would be something like

await Task.WhenAny(
@DamianSuess
DamianSuess / MessageDialogView.axaml
Created February 5, 2023 01:16
Prism.Avalonia - MessageDialogView
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
MaxHeight="{Binding MaxHeight}"
MaxWidth="{Binding MaxWidth}"
mc:Ignorable="d" d:DesignWidth="500" d:DesignHeight="150"
x:Class="SampleApp.Views.MessageDialogView">
<UserControl.Styles>
<Style Selector="TextBox">