Skip to content

Instantly share code, notes, and snippets.

View mr5z's full-sized avatar
🎯
Focusing

mark mr5z

🎯
Focusing
View GitHub Profile
@mr5z
mr5z / GetTokenResponse.cs
Created February 17, 2024 17:38
Android.Maui - Seriously?
public async Task<TokenResponse> GetTokenResponse()
{
var raw = Task.Run(async () => await SecureStorage.GetAsync(KeyTokenResponse)).Result
?? throw new InvalidOperationException($"'{nameof(TokenResponse)}' not found");
using var stream = new MemoryStream(Encoding.UTF8.GetBytes(raw), false);
return await JsonSerializer.DeserializeAsync<TokenResponse>(stream)
?? throw new InvalidOperationException($"Cannot deserialize '{nameof(TokenResponse)}'");
}
class SecretSong {
constructor(items) {
this.items = items || [];
this.lyrics = '';
this.itemsGiven = [];
}
init() {
let when = atob('T24gdGhl');
let verb = atob('ZGF5IG9mIENocmlzdG1hcyBteSB0cnVlIGxvdmUgc2VudCB0byBtZTo=');
const from = atob('ZG92ZXMsIGE='), to = atob('ZG92ZXMsIGFuZCBh');
@mr5z
mr5z / number-to-words-inspired-by-chatgpt.cs
Last active August 29, 2023 19:26
Scalable solution for converting numbers to English words
using System.Numerics;
string ToWords(BigInteger number)
{
var ones = new string[] { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
var teens = new string[] { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
var xty = new string[] { "twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety" };
var suffixes = new string[] {
"", "thousand", "million", "billion", "trillion",
"quadrillion", "quintillion", "sextillion", "septillion",
@mr5z
mr5z / number-to-word-by-gpt.cs
Last active August 29, 2023 15:02
Code is borked
string[] ones = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" };
string[] teens = { "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
string[] tens = { "", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };
string[] suffixes = { "thousand", "million", "billion", "trillion", "quadrillion", "quintillion", "sextillion" };
string NumberToWords(ulong number)
{
if (number >= 1 && number <= 10)
{
return ones[number - 1];
@mr5z
mr5z / number-to-word.cs
Created August 28, 2023 19:34
Code looks bad. Please help
string ToOnes(long number)
{
if (number == 0)
{
return "";
}
var words = new string[] { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
return words[number - 1];
@mr5z
mr5z / CustomTimer.kt
Last active January 30, 2023 15:24
Resumable CountdownTimer
class CustomTimer(private val millisInFuture: Long, private val countDownInterval: Long) {
private var millisUntilFinished: Long = millisInFuture
private var timer = InternalTimer(this, millisInFuture, countDownInterval)
private var isRunning = false
var onTick: ((millisUntilFinished: Long) -> Unit)? = null
var onFinish: (() -> Unit)? = null
private class InternalTimer(
@mr5z
mr5z / stupid.kt
Last active October 14, 2022 10:43
Trying to replicate C#'s Uri.EscapeUriString()
fun tryEncode(url: String): URL {
val schemeSeparator = "://"
val schemeIndex = url.indexOf(schemeSeparator)
val scheme: String
val urlWithoutScheme: String
if (schemeIndex > 0) {
scheme = url.substring(0, schemeIndex)
urlWithoutScheme = url.substring(schemeIndex + schemeSeparator.length)
}
else {
@mr5z
mr5z / mapper.cs
Last active October 1, 2022 13:36
mapper
using System;
using System.Collections.Generic;
using ParameterizedFunc = System.Func<object, object>;
namespace CompanyName.Helpers
{
public class Mapper
{
private readonly IDictionary<(Type, Type), ParameterizedFunc> objectDictionary =
new Dictionary<(Type, Type), ParameterizedFunc>();
public static class BindableHelper
{
private const string KnownPropertyPattern = "Property";
public static BindableProperty CreateProperty<T>(
T? defaultValue = default,
BindingMode mode = BindingMode.TwoWay,
BindableProperty.BindingPropertyChangedDelegate? propertyChanged = null,
[CallerMemberName] string? propertyName = null)
{
// interface
interface IActivityInstanceProvider {
fun updateInstance(activity: Activity)
fun <TActivity: Activity> get(): TActivity?
}
// class
class ActivityInstanceProvider: IActivityInstanceProvider {
private val activityInstance: HashSet<WeakReference<Activity?>> = hashSetOf()